0

ELMAH with MVC4MVC用のNUGETパッケージを使用して構成しようとしています。

私のコードで発生したすべての例外を処理し、SQL Server に記録しています。

Ajax エラー関数を使用すると、AJAX Exceptions(500) エラーも処理されます。すべて正常に動作し、リダイレクトされたエラーページoverriding OnException in Filter Config

ただし、ユーザーが URL を変更し、コントローラーが存在しない場合、エラーが発生し、エラー ページにリダイレクトされません。

元:

sitename/test -- Correct URL

sitename/tst ---- Getting Server Error instead redirecting to Error page

ELMAH を使用して 404 を処理し、MVC でわかりやすい 404 ページにリダイレクトする正しい方法は何ですか。

を変更してみましたCustom Error with 404 in web.configが、期待どおりに動作しませんでした。

デフォルトでは、404 以外のすべてのエラーはエラー ページにリダイレクトされます。

サーバー エラー ページではなく、わかりやすい 404 ページにリダイレクトしようとしています。

便利なリンクやコードは役に立ちます。ありがとう

============================================

web.config を更新する

<customErrors mode="On">
<error statusCode="500" redirect="/Views/Shared/Error.cshtml"/>
<error statusCode="404" redirect="/Views/Shared/ErrorNotFound.cshtml"/>
</customErrors>
4

1 に答える 1

2

ASP.NET MVC では、URL は表示しているビューを表していません。コントローラーアクションです。ビューに移動することはできません。

たとえば、URL ~/Home/Index は を指していませんViews/Home/Index.cshtmlIndexの方法を指しControllers/HomeControllerます。次に、このメソッドはIndex.cshtmlビューをレンダリングし、結果を返します。

そのため、最初に を作成する必要がありますErrorControllerError次に、エラー ビューを一致するフォルダーに移動する必要があります。Errorとのアクション メソッドを に追加し、正しいビューを返すようにしますErrorNotFoundErrorController

最後に、web.config リダイレクト URL を に変更します~/Error/ErrorNotFound

この方法を使用すると、コントローラー アクションの名前とそれぞれのビューを変更して、重複した作業を削除することができErrorます。

于 2013-08-05T16:56:29.893 に答える