【问题标题】:.NET Security Error accessing external API.NET 访问外部 API 的安全错误
【发布时间】:2011-01-08 17:05:40
【问题描述】:

我正在为自己构建一个小型 Twitter 网络应用程序。我正在使用 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 信任级别。所以我切换到 MEDIUM 并改变了:

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

...像这样:

原文:

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

改变:

   <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 还是这里,所以我从这里开始 :)

【问题讨论】:

  • 您永远不应该手动编辑machine.config(或其变体)。
  • 您能否将错误重新粘贴到&lt;pre&gt; 块中? (保留换行符)

标签: .net security api trust tweetsharp


【解决方案1】:

抱歉没有早点发现。

您是否有不能使用完全信任的原因?我不确定为什么会发生这种情况,但您可以提交错误。 TweetSharp 尝试提前要求 WebPermission 以避免稍后在运行时遇到问题。

【讨论】:

  • 嗨,我使用的是完全信任,它也在做同样的事情。所以我试着这样做。结果相同。 :(
猜你喜欢
  • 2021-06-09
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多