我的应用程序正在抛出一个安全异常,其中包含以下详细信息:
描述:应用程序尝试执行安全策略
不允许的操作异常详细信息:System.Security.SecurityException:请求类型为'System.Security.Permissions.SecurityPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。
[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
System.Security.CodeAccessPermission.Demand() +58
System.Net.ServicePointManager.set_CertificatePolicy(ICertificatePolicy value) +54
com.paypal.sdk.core.APICallerBase.SetTrustManager() +114
应用程序的信任级别设置为medium,我已将[assembly:AllowPartiallyTrustedCallers]属性添加到项目的程序集中。
我该怎么做才能解决这个问题? System.dll是否允许部分可信赖的呼叫者?
答案 0 :(得分:1)
在挖掘中,paypal方法SetTrustManager()可能会尝试重新分配ServicePointManager的证书策略。这没关系,但它需要底层代码组的UnmanagedCode权限。
我建议您在.Net Framework配置控制台中提供此权限,看看是否有帮助。
或者,您可以将应用程序的配置“TrustAll”参数设置为False,以便SetTrustManager不会破坏证书策略(当然,假设所述证书策略可以随时用于您需要使用的任何证书,换句话说,此TrustAll事件可能会超出此权限错误,但如果证书,则会失败)
在类似情况下,我发现此MDSN page上的工具非常有用。
(在javacavaj中注释)允许调用某些程序集的非托管代码:
披露:我不是.NET安全模型的专家;以下内容应允许您更改授予某些程序集的权限,以便针对手头的问题进行诊断。出于生产目的,请由合格的管理员审核您的.NET配置,因为他/她可以确保配置是安全的,并建议某种方式来构建代码组,权限集和其他元素,以便于管理和部署。
您可以使用Mscorcfg.msc更改.NET安全策略,即.Net Framework配置控制台。详细信息可能因.NET版本和Windows主机而异,但一般情况下:
Et瞧...
除了上述内容之外,我希望我知道一个可以[更好]描述此类程序的网站。也许这Overview of the .NET Security Model会有所帮助。谷歌搜索提供的几个关键字也可能产生相关的指针。