属性ルーティングを使用して 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 ページをいじる必要がありますか?