Использование WebRequest.Create внутри RenderControl () для веб-частей - PullRequest
0 голосов
/ 20 сентября 2010

Мне нужно вызвать веб-сервис для получения объекта JSON, который я проанализирую перед отображением содержимого.Вот код для того же самого:

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

Это работает как отдельная страница ASP.Net.Однако мне нужно это как веб-часть для переноса на сайт Sharepoint.Используя описанный метод здесь Я дал приведенный выше код в методе RenderControl ().Я получаю сообщение об ошибке "Похоже, что веб-часть" CustomWebPart "вызывает проблему. Запрос разрешения типа" System.Net.WebPermission, System, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'не выполнен ".

Я пытался включить варианты следующей строки в web.config безрезультатно.

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

Есть идеи?

1 Ответ

1 голос
/ 24 сентября 2010

Развертывание веб-части в GAC сработало.Ранее я развертывал его вручную - скопируйте dll в папку bin

Развертывание в GAC дает разрешения для таких вызовов, как WebRequest.Create ()

Ссылки на Sharepoint Security: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/sharepoint_wsscodeaccesssecurity.asp

...