为什么System.Web.Hosting.ApplicationHost.CreateApplicationHost会抛出System.IO.FileNotFoundException?

时间:2008-11-27 15:53:42

标签: c#

我看到了一些需要让程序集可用于传递给函数的第一个参数的类型。我想是的,我无法弄清楚我错过了什么。

此代码在服务中。我在“NETWORK SERVICES”用户帐户下运行该服务,当我将帐户更改为我登录的会话时,它运行正常。但是,有什么区别,我怎样才能让它为NETWORK SERVICES用户工作。

8 个答案:

答案 0 :(得分:4)

将您的二进制文件复制到您的网络应用程序的bin文件夹中也可以解决此问题。

答案 1 :(得分:2)

顺便说一句,this页面提供了有关此主题的更多信息,以及解决GAC问题与将程序集复制到bin文件夹的可能方法。这个页面已经有几年了,但它似乎仍然相关。

答案 2 :(得分:1)

我也有这个问题。我认为运行时正在尝试将包含作为第一个参数传递的类型的程序集加载到CreateApplicationHost并且无法找到它

出于某些奇怪的原因,当我在我的物理目录(第三个参数)中创建一个bin目录时,它包含了包含它试图加载的类型的exe或程序集。

我不知道它为什么不首先查看工作目录...

答案 3 :(得分:0)

网络服务是一个内置帐户,对资源的访问(有充分理由)非常有限。您可能不应该更改它,因为您将打开您的网站以防止其他潜在的漏洞。

如果您必须,请参阅here了解如何配置它以访问其他资源。

答案 4 :(得分:0)

我认为这与网络服务帐户或代码访问安全性更密切相关,与GAC无关。我正在使用CreateApplicationHost()在MS Test项目中创建一个ASP.Net主机,它就像一个冠军。我使用的类型不在部署到GAC或甚至强名称的程序集中(它在TestProject中定义)。

你必须喜欢这些类型的不一致......它让生活变得有趣。

答案 5 :(得分:0)

答案 6 :(得分:0)

我无法在Windows 2008上使用.NET2(64位,但我认为这不重要)。当我的用户是本地管理员时,它可以工作,但我不希望我的服务以提升的权限运行。我搜索了高低,最后想出来了(没有将程序集添加到GAC,对我来说同样糟糕):为我自己托管的站点创建一个web.config文件,设置bin文件夹进行探测。之前我没有web.config文件,因为我的网站都是用代码处理的。这就是我的配置文件现在的样子:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="bin"/>
    </assemblyBinding>
  </runtime>
</configuration>

答案 7 :(得分:-3)

我终于找到了答案:似乎给ApplicationHost.CreateApplicationHost()的类型必须位于GAC中的程序集中。 简单,愚蠢:)