4

この問題を簡潔に説明することはできませんので、あいまいなタイトルで申し訳ありません。

基本的に、私はWindows Server 2008 x64、IIS7、ASP.NET 2.05を使用しており、Classic AppPoolで実行しているサイトを持っています(統合では実行できません)。

* .aspxファイルを初めてロードしようとすると(つまり、サイトのインストール後、サーバーの再起動後など)、次のエラーが発生します。

HTTPエラー500.0-
内部サーバーエラー内部サーバーエラーが発生したため、ページを表示できません。
モジュール:IsapiModule
通知:ExecuteRequestHandler
ハンドラー:PageHandlerFactory-ISAPI-2.0-64
エラーコード:0x800710dd
ログオン方法:匿名
ログオンユーザー:匿名

ハンドラーはデフォルトの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" />

唯一のことは、エラー通知のハンドラー部分をIsapiModuleに変更することでした。

奇妙なことに、このエラーは最初にのみ発生します(または、サーバーが何時間もアイドル状態になっている場合)。このエラーが表示されたらすぐに、ページを更新すると、すべて問題なく、再びダンディになります。

web.configファイルを削除しようとしましたが、まったく何もしませんでした。

私はインターネット上でこの問題に対する単一の答えを見つけることができないようです。

編集:失敗したリクエストの追跡を有効にしました。これが表示されます。

MODULE_SET_RESPONSE_ERROR_STATUS警告ModuleName="IsapiModule"、Notification = "EXECUTE_REQUEST_HANDLER"、HttpStatus = "500"、HttpReason = "Internal Server Error"、HttpSubStatus = "0"、ErrorCode = "操作識別子が無効です。(0x800710dd)"、ConfigExceptionInfo = ""

そして、エラーの直前にそれが表示されます:

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

これを成功した実行と比較すると、違いは、エラーがMODULE_SET_REPONSE_ERROR_STATUSを生成するのに対し、成功した実行は生成しないことです(その後、正しいHTML出力を生成します)。

編集:私は単純なアプリを取り、それを実行しようとしましたが、同じエラーが発生しました。しかし、アプリプールが統合モードの場合、正常に実行されました。残念ながら、指定できない理由でアプリを統合に移行できませんが、アプリプールに絞り込みました。また、エラーを再現するためにサーバーを再起動する必要はありません。代わりに、アプリプールをリサイクルします。

要約:
-以下で説明するように、イベントログには失敗を示すものは何もありません。イベントビューアですべてのログを調べました

4

6 に答える 6

4

最善の方法は、WebサイトのIISセクションでFailedRequestTracingを有効にすることです。次に、より詳細な情報を提供するいくつかのフィルターを有効にすることができます。

これは、IISマネージャーを介して実行できます。Webサイトをクリックし、[機能]ビューの[IIS]セクションで、[失敗した要求のトレースルール]をダブルクリックします。

まだ有効になっていない可能性が高いため、右端の列から[サイトトレースの編集]を選択します。[有効にする]チェックボックスをオンにして、ディレクトリをメモします。

次に、その画面にルールを追加するか、アプリケーションに移動して、そこから「FailedRequestTracingRules」IIS機能を開くことができます。

右端の列から[追加...]をクリックし、ウィザードを実行してログを設定します。

エラーを再度スローしているページをロードします。ロギングフォルダに移動し、XMLファイルをダブルクリックします。そのディレクトリにXSLがあります。それを核にしないでください、それがなくなると、それは再作成されません。:s変換されたXMLは、予想以上の情報を表示します。

私は今晩それを使用して、構成したカスタムエラーページが「/」の代わりに〜/を使用していて、IISが停止していることを発見しました。

于 2011-05-24T04:48:41.007 に答える
0

ASPX コードに未処理の例外ハンドラー (Global Application_Error など) がありますか?

ASPX コードから発生している場合は、例外をキャッチしてログに記録できるはずです (これはかなり可能です)。

以前にこのような散発的なエラーを見たことがありますが、現時点では根本的な原因を思い出せません。

方法: アプリケーション レベルのエラーを処理する

于 2009-08-06T19:43:48.453 に答える
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>

この助けを願っています!応援してください。

于 2013-09-28T10:05:20.827 に答える
0

アプリプールの起動中に何かのように聞こえます。ただし、イベント ビューアーに実際のエラーを記録する必要があります。または、CustomErrors をオフにしてデバッグすることもできます。問題は、何が起こっているのかを理解するために実際のエラーを確認する必要があるということです。

于 2009-08-06T17:47:53.007 に答える