2012-08-14 146 views
4

我得到的常見錯誤:阻止加載特定DLL在IIS

無法加載文件或程序集「...」或它的一個依賴。找不到指定的模塊 。

問題是這個DLL引用非託管DLL,所以它永遠不能正確加載。我只想讓IIS忽略這個文件。

我正在玩web.config中的<remove assembly>標籤,但沒有運氣。

有關如何防止我的一個DLL加載的任何建議?

回答

2

即使我不能想出一個辦法來限制特定組裝,我可以通過移除所有組件並添加我需要的特定組件來完成它。改變的web.config文件:

<system.web> 
    <compilation targetFramework="4.0"> 
     <assemblies> 
      <remove assembly="*"/> 
      <add assembly="example.dll"/> 
     </assemblies> 
    </compilation> 
</system.web> 
+0

這解決了我無法「後期加載」DLL的問題。所有你需要做的就是刪除所有你想做的事,並將Web項目DLL添加到列表中。這將使項目運行,並且您可以在Global.asax中的Application_Start中實現自己的程序集加載,以加載所需的其餘DLL。有了你自己的加載器,你可以自己處理錯誤或忽略它。甚至可能解決bin文件夾內的本地DLL問題。只需將Application_Start中的PATH環境變量設置爲bin文件夾並開始加載其餘的DLL即可。 – Wolf5 2014-03-31 16:42:34

1

.Net運行時無法加載程序集以獲得樂趣。它只在需要時纔會這樣做 - 即您正在使用該程序集中的類/方法。只要沒有執行使用它們的代碼,您甚至可能會引用不存在的程序集。

因此,防止程序集加載不會使您的應用程序正常工作 - 即刪除程序集並查看您的應用程序是否因缺少依賴關係而崩潰。

如果是自己裝組件以某種方式(如Assembly.Load)比你需要弄清楚如何跳過此類組件...

+0

似乎並非是這種情況,我...我需要的組件,在那裏爲一個單獨的進程。我可以刪除它,並且我的web應用程序將在IIS中完美運行,但我需要那裏的dll進行安裝和卸載操作 – declyne 2012-08-14 18:48:33

+0

@declyne,您是否調試過它來確定誰試圖加載程序集? – 2012-08-14 18:51:18

+1

是的,在我的應用程序甚至進入Application_Start之前,IIS會嘗試加載它。 – declyne 2012-08-14 18:52:12