2011-09-02 75 views
8

我有一個用ASP.NET編寫的應用程序,它使用DllImport來引用在Delphi中編寫的dll 。在我的Windows 7開發機器上使用訪問ddl的asp.net Development Server按預期工作。錯誤的應用程序w3wp.exe

但是在Windows Server 2008的生產服務器運行IIS 7的dll返回錯誤「頁面無法找到」和下面的錯誤彈出到應用程序日誌:

Faulting application w3wp.exe, version 7.0.6002.18005, time stamp 0x49e023cf, faulting 
module ntdll.dll, version 6.0.6002.18005, time stamp 0x49e03821, exception code 
0xc0000374, fault offset 0x000afaf8, process id 0xab8, application start time 
0x01cc6947b1bb081b. 

如何解決這個或如何能我發現更深層次的原因?

+1

在您的開發環境中,您是否嘗試在本地IIS中運行應用程序,而不是使用Development Server?請記住,開發Web服務器在您的憑據下運行,因此在IIS中運行它時,應用程序權限會有所不同。看看是否在本地運行IIS也會引發錯誤。 – Icarus

+0

在IIS上運行應用程序localy也會引發錯誤。 – Sebastiaan

+0

所以你正在取得進展...你現在已經知道它與某種權限或信任級別問題有關,因爲你的本地盒子上的IIS也會引發這個問題。 – Icarus

回答

3

只是一個預感,但你可以嘗試enabling 32bit worker process。它與64位更兼容,可能會有所幫助。你的本地服務器是32位嗎?

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true 

如果失敗,這可能有助於調試問題。

Troubleshooting IIS7 Worker Thread Crashes (w3wp.exe) with a Faulting Module of ntdll.dll

還有這裏的線程與相同的問題。他們建議增加對kernel32.dll的引用可解決該問題。

Calling unmanaged code from ASP.NET in IIS7

更新

有人報告說,複製你的依賴關係Windows\System32\Inetsrv解決問題。值得一試。

+0

我啓用了32位工作者procces但沒有成功,我的Windows 7是64位 – Sebastiaan

+1

這是值得一試,'異常代碼0xc0000374'意味着堆腐敗。 – TheCodeKing

+1

只是做了一些更多的閱讀,似乎很多人有問題調用IIS7中的非託管代碼。 – TheCodeKing