2017-10-07 120 views
0

我們有第三方應用程序,它以DLL的形式提供SDK,可用於開發自定義應用程序連接到他們的服務。該DLL位於第三方應用程序的目錄以及其依賴的一堆其他DLL中。 SDK指南提供了通過Visual Studio創建測試應用程序的說明,並且它說要添加對Copy Local設置爲False的SDK DLL的引用。我創建了一個測試Windows Forms .NET應用程序,並按照說明添加了對DLL的引用,並且一切正常。但是,在ASP.NET應用程序中引用該DLL會導致其中一個依賴的第三方DLL的FileNotFoundException異常。無法在ASP.NET應用程序中使用第三方DLL,但可以從Windows Forms .NET應用程序運行

作爲一個實驗,我嘗試在我的項目中添加一個對違規DLL的引用,其中Copy Local設置爲False,但得到了同樣的錯誤。隨着Copy Local設置爲True它得到更多,但在另一個DLL上失敗。無論Copy Local設置如何,添加對該DLL的引用都會失敗。

我認爲這些問題與「標準」.NET應用程序加載程序集與ASP.NET應用程序之間的差異有關,但我不太清楚應該如何解決此問題。

有沒有正確的方法來引用第三方DLL(及其依賴人員)在ASP.NET應用程序中,而不將它們放入GAC或應用程序的bin目錄中?

+0

有很多方法可能會出錯,所以根據你的問題給出答案是不可能的。第三方DLL可能在C或C++中有依賴關係,或者它甚至可能不能用於ASP.NET。引用DLL的現代方法是使用NuGet(如果包可用),它通常會處理有關引用其自己的依賴關係的骯髒細節。 – NightOwl888

回答

2

與在用戶會話中運行且具有更多權限和資源的WinForms應用程序相比,IIS上的ASP.NET Web應用程序在有限資源的會話0中運行。

它們本質上是完全不同的環境,所以除非這樣的庫的供應商聲稱ASP.NET/IIS支持,否則應該簡單地認爲它不兼容,應該避免。

你應該注意到,即使是微軟自己的技術(Office自動化,System.Drawing等)也只支持WinForms,而不支持ASP.NET。

相關問題