0

AuthorizeAttribute要求されたコントローラーを表示するアクセス権がない場合にユーザーをエラー ページに送信するカスタムを作成しました。

それらをリダイレクトするコードは次のとおりです。

Protected Overrides Sub HandleUnauthorizedRequest(filterContext As AuthorizationContext)
    Dim result = New ViewResult()
    result.ViewName = "Error"
    result.ViewBag.ErrorMessage = "oops, you are not allowed"
    filterContext.Result = result
End Sub

~/Shared/Error.vbhtml本来あるべきように、それらを にリダイレクトします。ただし、ページにはレイアウトのみが読み込まれ、ヘッダー"Error"が含まれますが、エラー ページのコンテンツは読み込まれません。

エラーページの内容は以下の通りです。

@ModelType System.Web.Mvc.HandleErrorInfo

@Code
    ViewData("Title") = "Error"
End Code

@ViewBag.ErrorMessage

<h2>
    Sorry, an error occurred while processing your request.
</h2>

「申し訳ありませんが、エラーが発生しました... 」というメッセージがロードされないのはなぜですか?どうすればロードできますか? ありがとうございました。

4

1 に答える 1

1

~/Shared/Error.vbhtml にリダイレクトします。

いいえ、そうではないと思います。おそらく、レンダリングされている他のビューError.cshtmlまたはビューがあるでしょう。Error.vbhtmlあなたのサイトを検索して、そのようなファイルがどこかに存在するかどうかを確認してください。たとえば~/Views/XXX/Error.vbhtml、XXX は現在実行中のコントローラーです。

または、確立されたプローブ場所に依存する代わりに、ロードするビューを明示的に指定することもできます。

result.ViewName = "~/Views/Shared/Error.vbhtml"
于 2012-08-07T17:48:43.380 に答える