Ошибка безопасности .NET при доступе к внешнему API - PullRequest
3 голосов
/ 24 января 2010

Я создаю небольшое веб-приложение для себя. Я использую TweetSharp, но получаю сообщение об ошибке:

Server Error in '/test' Application.

Security Exception

Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. 

Exception Details: System.Security.SecurityException: You cannot use TweetSharp in partial trust without a policy that allows connecting to API endpoints.
The following policy information (or equivalent) must be added to your trust policy:
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
<ConnectAccess>
<URI uri="http://twitter\.com/.*"/>
<URI uri="http://api.twitter\.com/.*"/>
<URI uri="http://search.twitter\.com/.*"/>
</ConnectAccess>
</IPermission>


Source Error: 


[No relevant source lines]

Source File: App_Web_kiqglk9p.1.cs    Line: 0 

Stack Trace: 


[SecurityException: You cannot use TweetSharp in partial trust without a policy that allows connecting to API endpoints.
The following policy information (or equivalent) must be added to your trust policy:
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
<ConnectAccess>
<URI uri="http://twitter\.com/.*"/>
<URI uri="http://api.twitter\.com/.*"/>
<URI uri="http://search.twitter\.com/.*"/>
</ConnectAccess>
</IPermission>

Я провел некоторое исследование по этой теме и обнаружил, что все, что мне нужно сделать, это добавить URI, которые мне нужны для доступа к уровню доверия .NET, который я использую. Поэтому я переключился на СРЕДНИЙ и изменил:

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG \ web_mediumtrust.config

... вот так:

ОРИГИНАЛ:

   <IPermission class="WebPermission" version="1">
       <ConnectAccess>
             <URI uri="$OriginHost$"/>
       </ConnectAccess>
   </IPermission>

ALTERED:

   <IPermission class="WebPermission" version="1">
        <ConnectAccess>
             <URI uri="$OriginHost$"/>
             <URI uri="http://twitter\.com/.*"/>
             <URI uri="http://api.twitter\.com/.*"/>
             <URI uri="http://search.twitter\.com/.*"/>
         </ConnectAccess>
    </IPermission>

Тем не менее, я все еще получаю ту же ошибку. Есть идеи?

PS: я не был уверен, принадлежит ли это к ServerFault или здесь, поэтому я начинаю здесь:)

1 Ответ

1 голос
/ 14 февраля 2010

Извините, что не заметил это раньше.

Есть ли причина, по которой вы не можете использовать полное доверие? Я не уверен, почему это происходит, но вы можете сообщить об ошибке. TweetSharp пытается запросить WebPermission заранее, чтобы избежать проблемы во время выполнения.

...