我有一个(.Net 4.5.1)应用程序,经常从网络共享运行(即\\server\someshare\application.exe
)。
不幸的是,除非我将该行添加
<loadFromRemoteSources enabled="true"/>
到应用程序的配置文件中,否则这并不总是有效。
这msdn 文档说:
在 .NET Framework 4.5 中,本地网络共享上的程序集默认以完全信任的方式运行;您不必启用该元素。
因此问题似乎在于服务器不被认为在 上"local network"
。
我搜索了一段时间,试图找出服务器如何被归类为“本地网络”,但找不到任何确凿的证据。有些网站说我应该将服务器添加到互联网设置中的“受信任的站点”,但我尝试这样做时没有帮助(而且将它添加到那里也似乎很奇怪,因为它通常需要 https:// 前缀)。
msdn文档中另一个令人困惑的事情是:
如果 enabled 未设置为 true,则在以下情况下会引发异常:
[...]
* 正在加载的程序集不是来自我的电脑区域。
简而言之:服务器需要满足哪些要求local netwwork
?是在服务器、客户端还是域上配置的?
(服务器和客户端均在同一个域中,且用户使用域账户登录)
答案1
我认为这完全取决于访问方法,即客户端是否通过网络共享本地网络运行您的应用程序,例如
\\服务器\someshare\应用程序.exe
那么这将被视为本地网络。
另一方面,如果你的应用程序通过 HTTP 访问,那么它就是通过 Web 访问的,例如http://服务器/路径/应用程序.exe文档中有关区域(包括“我的电脑”区域)的所有引用均指网络访问。
请注意,如果您的应用程序从互联网复制到本地网络共享,则 Windows 会将其标记为 Web 应用程序,因此您可能会遇到这种情况。以下是 MSDN 的直接引述:
如果应用程序是从 Web 复制的,即使它驻留在本地计算机上,Windows 也会将其标记为 Web 应用程序。您可以通过更改文件属性来更改该指定,也可以使用元素授予程序集完全信任