0

属性ルーティングを使用して MVC 5 で 404 (たとえば) エラーページを実装する最良の方法は何ですか?

この記事を読みました: http://benfoster.io/blog/aspnet-mvc-custom-error-pages

そして、単純な 404 リダイレクトには少し無理が​​あるようです!!

Notify というコントローラーがあります。

[RoutePrefix("notify")]
public class NotifyController : Controller
{
    [Route("not-found")] 
    public ActionResult NotFound()
    {
        return View();
    }
}

そして私のweb.configで:

<customErrors mode="On" defaultRedirect="~/notify/error" xdt:Transform="Replace">
      <error statusCode="404" redirect="~/notify/not-found"/>
</customErrors>

危険な URL を入力すると、次のような not-found ページが表示されます: https://www.mydomain.co.uk/notify/not-found?aspxerrorpath=/lkl

私がリンクした記事では、CustomErrors に以下を追加して aspxerrorpath を削除することを提案しています。

redirectMode="ResponseRewrite"

ただし、これによりリダイレクトが中断されます。したがって、省略してもリダイレクトされますが、404 ステータスは返されません。そこで、ActionResult を次のように変更しました。

[Route("not-found")] 
public ActionResult NotFound()
{
    if (Response.StatusCode == 200)
            Response.StatusCode = 404; 
        return View();
}

これにより 404 ステータス コードがスローされましたが、デフォルトの 404 エラー ページが表示されました。

属性ルーティングを使用して MVC で CustomErrors を処理するための推奨される方法はありますか? または、リンクのように aspx ページをいじる必要がありますか?

4

0 に答える 0