2008-11-27 65 views
5

我看到了一些需要讓程序集可用於傳遞給函數的第一個參數的類型。我想是的,我無法弄清楚我錯過了什麼。爲什麼System.Web.Hosting.ApplicationHost.CreateApplicationHost會拋出System.IO.FileNotFoundException?

此代碼在服務中。我在'NETWORK SERVICES'用戶帳戶下運行該服務時,當我將帳戶更改爲會話登錄時,它的工作正常。但是,有什麼區別,我如何才能讓它爲NETWORK SERVICES用戶工作。

回答

-3

我終於找到了答案:它看起來ApplicationHost.CreateApplicationHost()的類型必須位於GAC中的程序集中。 簡單,愚蠢:)

+0

很酷。你有沒有在我可以看到的一些文檔中找到這個...或者是通過試驗和錯誤? – 2009-01-19 14:32:52

0

網絡服務是一個內置帳戶,對資源的訪問非常有限(出於很好的理由)。你可能不應該改變它,因爲你會打開你的網站到其他潛在的漏洞。

如果您絕對需要,請參閱here瞭解如何將其配置爲可以訪問其他資源。

0

我認爲這與網絡服務帳戶或代碼訪問安全性更密切相關,與GAC無關。我正在使用CreateApplicationHost()在MS Test項目中創建一個ASP.Net主機,它的工作原理類似於冠軍。我使用的類型不在部署到GAC甚至是強名稱的程序集中(它在TestProject中定義)。

你一定喜歡這些不一致的地方......它讓生活變得有趣。

1

我也有這個問題。我認爲運行時正在嘗試加載包含作爲CreateApplicationHost的第一個參數傳遞的類型的程序集,並且它無法找到它

有些奇怪的原因,當我在物理目錄中創建bin目錄時(第三個參數)包含包含它正試圖加載的類型的exe或程序集。

我不知道爲什麼它不會在工作目錄中先來看看......

4

您的二進制文件複製到你的Web應用程序的bin文件夾也將解決這個問題。

2

順便說一下,this頁面有更多關於此主題的信息,以及一種解決GAC與將程序集複製到bin文件夾的問題的可能方法。該頁面在這一點上已經有幾年了,但它似乎仍然相關。

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> 
相關問題