.NET程序集在网络驱动器上以部分信任方式运行,但所有其他组件完全信任

在网络驱动器上运行时,我们的C ++解决方案(调用.NET 4.0程序集)存在一个奇怪的问题。 该解决方案使用NetTcpBinding托管多个WCF服务,其中一个具有非默认绑定配置。 在部分信任下,非默认的NetTcpBinding本身是不可能的(请参阅堆栈溢出问题WCF NetTcpBinding何时需要在客户端上完全信任? ),但解决方案在完全受信任的网络驱动器下运行。 这适用于几台不同的计算机(Windows Vista和Windows 7),但在一台计算机上失败(Windows Vista)并抛出exception,

为“system.serviceModel / bindings”创建配置节处理程序时发生错误:该程序集不允许部分信任的调用方。 (K:\ Somepath \ Testing.exe.Config第6行)

如果解决方案确实在该计算机上的部分信任下运行,那么这个例外将是完全正常的,但它确实在完全信任下运行。 即使我检查完全信任代码也是如此。

我们用其中一台计算机对互联网选项进行了双重检查 – 没有差别。

所有DLL文件和EXE文件都是强名称。

更新:网络驱动器在特定计算机( caspol.exe )上完全信任。

我们应该寻找什么?

如果您需要其他信息,请告诉我。

更新2:我们仍然有这个问题,现在甚至在一台计算机上(Windows 7)。 所以它似乎与操作系统无关。

它被称为代码访问安全性 (CAS),它强制将所有不受信任的网络驱动器视为不受信任的网络代码。

本地代码具有完全信任,网络代码具有部分信任,并且Internet代码没有信任。 它只是一个.NET安全模型。 您可以选择将网络驱动器指定为“可信”驱动器,方法是为其提供完全权限(搜索caspol.exe完全信任网络驱动器)或将EXE文件复制到本地驱动器。

使用CASPOL完全信任网络共享可以帮助您。

或者在命令行上:

 CasPol.exe -m -pp off -ag 1.2 -url file://///server/share/* FullTrust . 

我们在这里找不到解决方案,但解决方法是:不要使用app.config进行绑定设置。 在代码中设置它们适用于我们在相同的环境中。

顺便提一下, 这个问题似乎处理了类似的问题。 HTH

右键单击app.config – > Properties – > Unbock