2013-06-12 46 views
8

カスタムエラーをオンにしたときに302または200のいずれかで応答するカスタムエラーがない場合、asp.netは通常の404応答を実行しないのはなぜですか?ASP.NETカスタムエラーページHTTP応答

<customErrors defaultRedirect="Error.aspx" mode="Off"> 
    <error statusCode="404" redirect="Error.aspx?status=404" /> 
</customErrors> 

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" /> 
</httpErrors> 

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" /> 
</httpErrors> 

を私の知る限り、トップ1が得られます。

だから例えば私は、次のすべてを試してみました302がエラーページにリダイレクトされると、2番目のメッセージは何らかの理由で200を返し、最後のメッセージも302を返します。私はまだ404(または何か他のエラーコード)が好きですが、フレンドリーなメッセージを表示するために愚かです。

エラーページで別の応答を返すことができますが、エラーページに404コードを渡して、元のリクエストに302を保持しているようです。 customErrorsが有効になっているとき

私は何かが欠けていない限り...

答えて

4

あなたは正しいですが、ASP.NETは少しファンキーな動作をします。つまり、customErrorsredirectMode="ResponseRewrite"を設定し、error.aspxページに応答コードを設定することができます。

私はここに詳細をブログしました:Keep ASP.NET error pages out of search engines

関連する問題