サーバーによって作成されたデフォルトの404ページの代わりに、表示するように作成したカスタム404ページを取得しようとしています。アプリケーションをローカルでデバッグする場合は意図したとおりに機能しますが、サーバーでアプリケーションを実行する場合は機能しません。そして、それらのweb.configファイルはまったく同じように見えます。
<customErrors mode="On" defaultRedirect="~/Error/Index">
<error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>
奇妙なことに、モードを「オフ」または「RemoteOnly」に設定したり、「〜/ Error」を「Error」だけに変更したり、セクションを完全に削除したりすると、結果は常に同じになります。ローカルでは見栄えの良い404ページですが、サーバー上ではありません。
ローカルでデバッグする場合、このメソッドは意図したとおりに実行されます。
public class ErrorController : BaseController
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult NotFound()
{
Response.StatusCode = (int)HttpStatusCode.NotFound;
ErrorSignal.FromCurrentContext().Raise(new HttpException(404, Request.Url.PathAndQuery + " was not found"));
return View();
}
}
Global.asaxでこのルートが見つかったため:
routes.MapRoute(
"NotFound",
"{*path}",
new { controller = "Error", action = "NotFound" });
ありとあらゆるアドバイスをいただければ幸いです。