2013-11-21 31 views
7

コントローラ/アクションへのエラーパスを変更するにはhttpエラーMVC 5 HttpErrors +コントローラ/アクション

私はこのコードを持っている:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/> 
</httpErrors> 

をしかし、それは動作しません。空のページが表示され、アクションは入力されません。

私は間違っていますか?

P.S.私はカスタムページのエラーを混乱させる別の方法について知っています。しかし、私はそれを使用しようとします。

ありがとうございます!

答えて

12

のURLをリダイレクトいけません。 web.configファイルのこのコードは動作します:

今ErrorsController/NOTFOUNDアクションに入力された
<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/> 
</httpErrors> 

は(atribute ActionName 404にルーティング印)。

+0

"ExecuteURL"は大文字と小文字が区別されます。 – Jester

+0

このアプローチは私のためには機能しません。私はASP.netを取得 "リソースが見つかりません。"エラーページ。/Error/404ページに直接アクセスできます。私はIIS ExpressとIISで試してみました。任意のヒント? – Sean

+0

@Seanこれは正しいことですが、重要な注意点は、仮想ディレクトリパスがある場合、またはそれも入力する必要がある場合は機能しないことです。私はそのことを知らなかったので、なぜそれができないのかを知るには何時間もかかりました。 – XzaR

1

は、なぜあなたは単に私がこの問題を解決する404

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="404" redirect="~/Error/HttpRequestError" />  
</customErrors 
+2

追加のリダイレクトはCEOにとっては悪いことです。 –

+0

@SergeyShoshin CEOは何ですか?あなたはSEOを参考にしていますか? –

+0

ああ、申し訳ありません。まさにSEO。 –

1

Sergey Shoshinの答えがうまくいかない場合。

<httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404"/> 
     <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/> 
</httpErrors>