从网络共享运行时,我的应用程序抛出以下异常:
该程序集不允许部分信任的调用者。
我的应用程序引用了两个DLL文件:
我不确定哪一个有问题。
AllowPartiallyTrustedCallersAttribute
:阅读它,但我没有任何DLL文件的源代码,因此我无法将属性添加到这些DLL文件中。
CASPOL.EXE
:使用一些变体添加了我的网络共享,例如caspol -machine -addgroup 1. -url \\netserver\netshare\* LocalIntranet
似乎没有任何影响。
我之前使用的是CASPOL hack,使用.NET 3.5,然而,它现在似乎无法使用.net 4.0。任何人都可以建议我如何绕过这个“部分受信任的来电者”检查?
感谢。
答案 0 :(得分:11)
.NET 4.0的安全策略有changed the default rules。您需要为此应用程序创建或修改App.config
文件。
现在,在.NET 4.0中默认忽略代码访问安全性(由CASPOL
配置)。如果要启用它,则需要将以下内容添加到app.config
文件中:
<configuration>
<runtime>
<!-- enables legacy CAS policy for this process -->
<NetFx40_LegacySecurityPolicy enabled="true" />
</runtime>
</configuration>
您可以将.NET 4.0配置为使用LoadFrom
将来自网络的代码视为完全受信任的以下配置项:
<configuration>
<runtime>
<!-- Treat assemblies from network locations as fully trusted. -->
<!-- Caution: Do not point this loaded gun at your foot. -->
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>