2011-07-11 17 views
35

は、IIS7 WebサイトのIntergrated .net 4.0アプリケーションプールを新規作成しました。 .aspxので終わるIIS7カスタム404が表示されない

URLは、他のカスタム404何かが青サーバエラーページ 「HTTPエラー404.0を与える表示しない - が見つかりませんあなたが削除されています探しているリソースは、その名前が変更された、または一時的に利用できません。 " は(そうIEとは何の関係も)

<customErrors redirectMode="ResponseRewrite" mode="On" defaultRedirect="/pages/404.aspx" /> 
</system.web> 
<system.webServer> 
    <httpErrors > 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

<httpErrors existingResponse="PassThrough" /> 

を試していないが、それはちょうど空の応答が生じました。

私は、カスタムhttpエラー処理をテストするためにappcmdを実行することの有用性について1つだけ言及しましたが、ここに結果があります。 IIS7マネージャでエラーページが

404 /pages/404.aspx Execute URL Local 

純エラーページを表示するので奇数である

C:\Windows\System32\inetsrv>appcmd list config "http://mysite/file.notexist" -section:httpErrors 

<system.webServer> 
    <httpErrors> 
     <error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="401.htm" /> 
     <error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="403.htm" /> 
     <error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="404.htm" /> 
     <error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="405.htm" /> 
     <error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="406.htm" /> 
     <error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="412.htm" /> 
     <error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="500.htm" /> 
     <error statusCode="501" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="501.htm" /> 
     <error statusCode="502" prefixLanguageFilePath="%SystemDrive%\inetpub\custer 
r" path="502.htm" /> 
    </httpErrors> 
</system.webServer> 

私はそこにエントリを持っていたのに、何も表示されません。

質問1:全く新しいasp .net 4 iis7サイトで404の結果ごとにカスタム.netエラーページを表示するにはどのような手順が必要ですか?

質問2:.netファイルハンドラは.aspxファイルで動作するのはなぜですか?

注:サーバーレベルで404を設定し、APPCMDコマンドは、パスにカスタム404を示したが、だから私はそれは赤いニシンだ推測しています404

を示すに失敗し、サイトには差が行われていません。

答えて

103

答えは、これが.aspxのと非.aspxの要求の両方のために働いたいかなるのSystem.WebのcustomErrors

を持っている

<httpErrors existingResponse="Replace" errorMode="Custom"> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx?he" responseMode="ExecuteURL" /> 
    </httpErrors> 

ないを使用していました。

私が調査したブログの投稿やstackoverflowの回答には、この組み合わせがうまくいきませんでした。私はそれを試してみました。

+1

この回答を投稿していただきありがとうございます - これは私が私がやっていることを知っていたように見えました! :) – indyDean

+5

ウィッシュ私はこれを数回余分にupvoteすることができます。助けてくれてありがとう!...この記事から気づいたことに言及する価値は、 "パス"セクションが "〜"で始まらないようにすることです。 – Mercurybullet

+0

ありがとうございます - IISでこれを設定すると、httpError素子。これはMicroSoftが失敗したことです!彼らはなぜそれを入れて、それを文書化しないのだろうか? – PhillyNJ

4
<httpErrors existingResponse="PassThrough" /> 

IIS 7(Windows Server 2008 R2)で動作します。

私の問題は私のweb.configにあったのですが、<location>です。ルート<system.webServer>に移動してください。 IIS7のために

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    ... 
    <system.webServer> 
     ... 
     <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 
+1

'web.config'全体を投稿して、あなたが話していることを見ることができますか? – JGallardo

+0

ああ、申し訳ありません。私は助けたいですが、私はもう.NETをやっておらず、古いコードにアクセスすることはできません。 – mhenry1384

0

以降、ロブの答えは1のみとhttpErrors、一緒に行く:https://stackoverflow.com/a/6661699

だけ追加して、あなたは/あなたのエラーページをレンダリングするためにASP.NETを使用する必要がある場合を除き、私が使用することをお勧めします静的HTMLファイルを使用して、ASP.NETへの依存関係を削除します。先頭のスラッシュを省略し、残りのパスにはバックスラッシュを使用してください。

<error statusCode="404" prefixLanguageFilePath="" path="pages\404.html" responseMode="File" /> 

正しいステータスコードを保持するように「responseMode="File"」を設定します。

+0

これは、元の答えに対するコメントでした。 –

+0

後で、あなたはおそらく正しいでしょう。当時私のポイントは新しい答えを保証するのに十分なものだと感じました。 –

関連する問題