テスト目的で、次の方法があります。
public ActionResult Index()
{
System.Diagnostics.Debug.Write("Index");
return new HttpNotFoundResult();
}
メソッドが呼び出されています ('Index' が出力されます)。どういうわけか、それがHttpException
スローされる原因になっています。私の Global.asax ファイルには、次のApplication_Error
実装があります。
void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
if (exc is System.Web.HttpException)
{
string msg = "UrlReferrer: "
+ Context.Request.UrlReferrer + " UserAgent: " + Context.Request.UserAgent
+ " UserHostAddress: " + Context.Request.UserHostAddress + " UserHostName: "
+ Context.Request.UserHostName;
ErrorHandler.Error(exc.Message, msg);
}
else {
...
}
}
このメソッドは、システムが のリクエストを処理した後に呼び出されていますIndex
。HttpNotFoundResult
これが原因で例外がスローされると思います-またはActionResult
、ステータスコードが404の場合に例外がスローされる可能性があります。
OnException
コントローラーのハンドラーを回避しているため、これは非常に面倒です。私の Web サイトでApplication_Error
は、最後のフォールバックであると想定されています。ほとんどの通常のエラーは、他の場所 (コントローラーまたはアクション フィルターによって) で処理されることを意図しています。Application_Error
完全に予期しない例外、または画像や .js ファイルなどの 404のみをログに記録したい。
プログラムで生成された 404 の例外を asp.net がスローするのを止める方法はありますか? または、プログラムで生成された 404 が原因であるApplication_Error
かどうかを判断する方法はありますか?HttpException