2015-07-20 121 views
0

我在一個asp.net應用程序中使用第三方dll文件。在開發環境中一切正常。ASP.NET:與第三方DLL的IIS問題

在部署時,我已將應用程序包導入到IIS默認站點進行測試。一切都像魅力一樣工作。

當我需要在IIS上創建新網站時(缺省網站除外),問題就開始了。所以我創建了一個新網站,一個新的目錄路徑(不是wwwroot),有一些權限問題,我解決了女巫問題。然後我啓動了應用程序,似乎工作得很好,但是當我嘗試訪問使用第三方dll的引用的特定頁面時,應用程序從第三方擁有的函數中引發異常(錯誤的名稱或編號...)黨的dll。

奇怪的是,在IIS默認站點中一切正常,在我使用新的IIS站點時炸燬了。不知道該怎麼做,有什麼想法?謝謝

+1

*錯誤的名稱或編號*看起來像一箇舊的VB6錯誤消息。你能發佈你收到的確切例外嗎? –

+0

我同意@FrédéricHamidi;該DLL可能是一些舊的VB6 COM庫(或C++ ATL),它需要在系統中註冊。有時候,一個簡單的'regsrv32.exe/i .dll'命令可以完成註冊Windows操作。在其他情況下,您可能需要實際運行隨庫提供的一些安裝程序。 – fourpastmidnight

+0

這些庫在vs項目中被引用並被編譯到一個單獨的dll中。當我在默認站點應用程序池中部署應用程序時,此異常不會發生。 「System.Runtime.InteropServices.COMException(0x800A0034):錯誤的文件名或編號\ r \ n在Interop ....」 – anibal

回答

0

檢查您在新網站中指向的應用程序池,並確保它設置爲正確的.NET版本。當您創建新網站時,您可能只是採用了默認應用程序池。

+0

這也是一件好事情來檢查。此外,請確保您還檢查應用程序池的「位」,並確保它與您嘗試使用的庫的「位」相匹配。 – fourpastmidnight

+0

我堅持了幾天,我已經嘗試複製新應用程序池中的每個配置以匹配默認應用程序池配置!該應用程序被配置爲以32位模式運行,同時我也將.NET從2.0更改爲4.0(必需)。 – anibal

-1

「已解決」,將新的應用程序池更改爲默認應用程序池。仍然不知道爲什麼新池發生異常。