2015-05-21 44 views
0

我有一個引用混合模式DLL的asp.net web服務。本機dll的混合模式程序集引用位於添加到SYSTEM PATH的目錄中。在asp.net中混合模式程序集加載

我想從SYSTEM PATH中刪除原生dll的目錄,所以我複製了所有原生dll到webservice的bin目錄,但我沒有找到文件異常。

asp.net是否不在web服務的bin目錄中查看本機dll?有沒有辦法動態設置SYSTEM PATH?我怎樣才能使這個工作。

+0

你見過這個職位:http://stackoverflow.com/questions/126331/specifying-a-non-net-dependency-in-visual-studio –

+0

是的大衛,我抄襲的DLL。 webservice的bin目錄包含所有本地dll,但它沒有找到它。如果我把所有的dll放在一個單獨的目錄中,並將該目錄添加到系統路徑中,那麼一切正常。 –

回答

0

如果有人正面臨着類似的情況,這是我做的,以便能夠從一個位置加載一個混合模式組件無法在這些地點:

  1. 從其中加載應用程序的目錄。在ASP.Net的情況下,這將解析爲IIS 6的%windir%\ Microsoft.Net \ Framework \ v ### \或%windir%\ system32 \ inetsrv。
  2. 當前目錄。對於ASP.Net,這將解析爲IIS 6的%windir%\ System32 \ inetsrv。如果使用內置Web服務器,則會解析爲C:\ Program Files \ Microsoft Visual Studio 8下的路徑。
  3. Windows系統目錄。使用GetSystemDirectory函數獲取此目錄的路徑。
  4. Windows目錄。使用GetWindowsDirectory函數獲取此目錄的路徑。
  5. PATH環境變量中列出的目錄。

我在混合模式程序集上設置本機dll以延遲加載。然後我按照選項2b從http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx

我只需要對選項2b做一些小的調整。它說在Global.asax中更新「Application_Start」方法,但我必須更新「Application_BeginRequest」方法才能使用我的web服務。

相關問題