2010-09-20 28 views
0

Je dois appeler un service Web pour recevoir un objet JSON que je vais analyser avant de rendre le contenu. Voici le code pour le même:Utilisation de WebRequest.Create dans RenderControl() pour WebParts

Dim jResponse As MessageResponseWrapper = New MessageResponseWrapper() 'Custom class to deserialize JSON 
     Dim req As System.Net.HttpWebRequest 
     req = System.Net.WebRequest.Create("http://some-cross-domain?q=" & SearchKeyword & "&restapi.response_style=view&xslt=json.xsl") 
     req.Method = WebRequestMethods.Http.Get 
     Dim res As HttpWebResponse = req.GetResponse() 
     Dim reader As New StreamReader(res.GetResponseStream()) 
     Dim json As String = reader.ReadToEnd() 

     Dim ser As New DataContractJsonSerializer(GetType(MessageResponseWrapper)) 
     Using ms As New MemoryStream(Encoding.Unicode.GetBytes(json)) 
      jResponse = TryCast(ser.ReadObject(ms), MessageResponseWrapper) 
     End Using 

Cela fonctionne comme une page ASP.Net autonome. Cependant, j'ai besoin de cela comme un composant WebPart pour le port vers un site Sharepoint. En utilisant la méthode décrite here J'ai donné le code ci-dessus dans la méthode RenderControl(). Je reçois l'erreur "Le composant WebPart" CustomWebPart "semble être à l'origine d'un problème.La demande de l'autorisation de type" System.Net.WebPermission, System, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 "a échoué."

J'ai essayé d'inclure des variantes de la ligne suivante dans web.config sans succès.

<SafeControl Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System.Net" TypeName="WebPermission" Safe="True" AllowRemoteDesigner="True" /> 

Des idées?

+0

Avez-vous déployer et activer le web part sur votre installation de sharepoint? –

+0

Je reçois l'erreur dès que j'attribue le composant WebPart à une page. Oui, il est rempli dans la galerie Webpart –

+0

Je pense que je reçois cela parce que c'est un appel interdomaines. Des façons de contourner cela? –

Répondre