2009-08-06 25 views
4

對不起模糊的標題,因爲我真的無法簡潔地解釋這個問題。我有一個網站運行在一個經典 AppPool(和我不能運行在集成)。IIS7間歇性地拋出500錯誤。任何人都可以幫助我診斷它嗎?

當試圖加載首次的* .aspx文件(即安裝現場,重新啓動服務器,等以後)我得到這個錯誤:

HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.
Module: IsapiModule
Notification: ExecuteRequestHandler
Handler: PageHandlerFactory-ISAPI-2.0-64
Error Code: 0x800710dd
Logon Method: Anonymous
Logon User: Anonymous

處理程序是默認的IIS7一個:

<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> 


我甚至嘗試添加在我自己的處理程序ASPX,看上去像這樣:

<add name="aspx" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" /> 

唯一的做法是將錯誤通知的Handler部分更改爲IsapiModule。

奇怪的是,這個錯誤只發生在第一次(或當服務器閒置了幾個小時)。只要我看到這個錯誤,如果我刷新頁面,它就再好不過了。

我甚至嘗試刪除web.config文件,並沒有做任何事情。

我似乎無法在互聯網上爲這個問題找到一個答案。

編輯:我啓用失敗請求跟蹤,這就是它顯示:

MODULE_SET_RESPONSE_ERROR_STATUS Warning ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The operation identifier is not valid. (0x800710dd)", ConfigExceptionInfo=""

和錯誤前右它表明:

NOTIFY_MODULE_START ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotification="false", fIsCompletion="false"

現在,當我比較這對成功運行區別在於錯誤產生了MODULE_SET_REPONSE_ERROR_STATUS,而成功的運行沒有(然後繼續產生正確的HTML輸出)。

編輯:我採取了一個簡單的應用程序,並試圖讓這個運行,我收到了同樣的錯誤。但當應用程序池處於集成模式時,它運行良好!不幸的是,我無法將我們的應用程序遷移到集成,原因是我無法指定,但我將其縮小到應用程序池。此外,我不必重新啓動服務器來重新制作錯誤,而是重複使用應用程序池。

摘要:
- 如下所述,事件日誌中沒有任何內容表示失敗。我梳理了事件查看器中的所有日誌

+0

事件日誌中是否有任何內容? – 2009-08-06 17:47:15

+0

在應用程序中是否有可能觸發服務器500的錯誤? – 2009-08-06 17:47:22

+0

事件日誌中絕對沒有任何東西 – encee 2009-08-06 17:48:06

回答

0

好吧,我不知道是什麼造成這一點,但一個乾淨的安裝我用固定它的虛擬機。歡呼!

+1

您沒有提到您在原始問題中正在VM內運行;-) – Oliver 2014-08-12 11:50:48

0

聽起來像啓動應用程序池時發生的一樣。但它應該記錄事件查看器中的實際錯誤。或者你可以關閉CustomErrors來調試它。事情是,你需要看到實際的錯誤來弄清楚發生了什麼事情。

+0

是的,這是問題所在。我不知道在哪裏看到這個錯誤。據我所知,絕對沒有任何可見的(除了500錯誤) – encee 2009-08-06 17:50:29

+0

哦,CustomErrors打開。這就是我首先得到錯誤信息的方式。 – encee 2009-08-06 18:01:29

0

當ASP.NET應用程序開始加載,你可能有一些代碼,可能要花很長時間來執行,可能過大應用程序變量或資源的初始化。

最好的方法是設置某種ping監視器,很多ISP提供pinging監視器,可以定期監視你的html url,這可能有助於保持你的應用程序所有的時間活着!

嘗試尋找你的asp.net應用程序的初始化過程,你可能想要增加一些超時值!

+0

那麼這發生在一個Hello World應用程序中,我很確定它沒有很長的初始化過程。 此外,頁面在第二次嘗試時加載正常(即使我刪除了服務器的緩存以及所有臨時文件和壓縮文件) – encee 2009-08-06 18:27:11

0

您的ASPX代碼中是否有未處理的異常處理程序(類似於Global Application_Error)?

如果它來自ASPX代碼(這很可能),您應該能夠捕獲異常並將其記錄下來。

我以前見過這樣的零星錯誤,我現在不記得其中的根本原因。

How to: Handle Application-Level Errors

3

要做的最好的事情是在網站的IIS部分中啓用失敗請求跟蹤。然後您可以啓用一些過濾器,這些過濾器會提供更多詳細信息。

您可以通過IIS管理器執行此操作。單擊您的網站,然後在功能視圖的IIS部分中,雙擊「失敗的請求追蹤規則」。

它很可能尚未啓用,因此從最右邊的列中選擇「編輯網站跟蹤」。選中「啓用」複選框並記下目錄。

然後,您可以在該屏幕中添加規則,或者轉到您的應用程序並從那裏打開「失敗的請求跟蹤規則」IIS功能。

再次從最右邊的列中單擊「添加...」,然後通過嚮導並設置日誌記錄。

加載您的頁面,再次拋出錯誤。轉到日誌文件夾並雙擊XML文件。該目錄中有一個XSL。不要摧毀它,因爲一旦它消失,它就不會被重新創建。 :s轉換後的XML將向您顯示比您希望的更多的信息。

我只是今天晚上用它來發現我配置的自定義錯誤頁面正在使用〜/而不是「/」,導致IIS死機。

0

你必須在你的web.config添加此腳本:

<system.webServer> 
    <handlers> 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </handlers> 

我希望這幫助!歡呼。

相關問題