C# - .NET 4.0 - 该程序集不允许部分受信任的调用方

标签 c# .net-4.0 c#-4.0 caspol .net-security

从网络共享运行时,我的应用程序抛出以下异常:

该程序集不允许部分受信任的调用方。

我的应用程序引用了两个 DLL 文件:

  • BitFactory.Logging.dll
  • FileHelpers.dll

我不确定是哪一个有问题。

  • AllowPartiallyTrustedCallersAttribute:仔细阅读它,但我没有任何一个 DLL 文件的源代码,因此我无法将属性添加到那些 DLL 文件。

  • CASPOL.EXE:使用一些变体添加了我的网络共享,例如 caspol -machine -addgroup 1.-url\\netserver\netshare\* LocalIntranet 似乎没有任何影响。

我以前在 .NET 3.5 中使用过 CASPOL hack,但是,它现在似乎不适用于 .net 4.0。谁能建议我如何绕过这个“部分信任的来电者”检查?

谢谢。

最佳答案

.NET 4.0 有 changed the default rules用于安全策略。您需要为此应用程序创建或修改 App.config 文件。

代码访问安全性(由 CASPOL 配置)现在在 .NET 4.0 中默认被忽略。如果你想启用它,你需要将以下内容添加到你的 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>

关于C# - .NET 4.0 - 该程序集不允许部分受信任的调用方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260782/

相关文章:

com - .NET 是 COM 的替代品吗?

.net-4.0 - 为什么ContinueWhenAll 和ContinueWhenAny 具有不受支持的TaskContinuationOptions?

c# - Windows服务计时器多线程

c# - 我可以在 MethodInfo 对象上找到应用的泛型参数的位置吗?

c# - 是否可以从深度位图中仅提取玩家的深度像素?

c# - 将字符串值与枚举的字符串值进行比较

c# - 我可以在现有方法中发出 CIL 吗?

c# - 如何在 net 中使用 interop.word 包抑制修复警告对话框和打开 word 文档?

c# - 将多个枚举传递给方法并获取它们的值

c# - MVVM ViewModel与View交互,是真的MVVM吗?