2014-03-12 116 views
1

我有一個需要使用非託管DLL文件的Web應用程序。非託管DLL在Application_Start之前加載

我正在嘗試使用在此related question上建議的解決方案。

我遇到的問題是,非託管DLL試圖在我的global.asax文件的Application_Start之前加載,該文件將我的路徑設置爲包含非託管DLL文件的位置,因此應用程序崩潰立即。

我真的想保持我的代碼設置PATH的行爲使我的解決方案可以部署到新的服務器,而不必有外PATH出版我的解決方案的設置本地訪問。

有沒有辦法強制我的Application_Start代碼在我的其他DLL文件被加載之前執行?

回答

1

不要改變PATH環境變量從ASP.NET應用程序中。這可能會導致Web服務器以奇怪的方式失敗。

開發人員從ASP.NET應用程序中使用非託管庫的一般接受方式是將非託管的.dll放入bin下的子文件夾中,然後調用LoadLibrary,並將完整路徑傳遞給模塊。

+0

Levi,你能提供一個鏈接,或者一個例子,這將被稱爲? –

+1

http://www.pinvoke.net/default.aspx/kernel32/LoadLibrary.html – Levi

+0

我對面的絆腳石提出的意見相反:保持本機DLL出的bin目錄不惜一切代價,並修改PATH環境變量所以他們會被加載。這似乎有很多的DLL和複雜的依賴關係樹的最易維護特別是對[大原生API(http://www.gdal.org/)。你指的是什麼奇怪的失敗? – Phil

相關問題