如何处理对已存在但不支持http方法的操作的请求?
例如,我有以下操作:
[HttpGet]
[Route("~/")]
[Route("ServiceVisits")]
public ActionResult Index()
{
return View();
}
如果向GET
或http://localhost:59949/
发出了http://localhost:59949/ServiceVisits
请求,那么我们将返回页面,但是,如果出现POST
请求,那么我的{我必须处理的Application_Error
中的{1}}方法。
执行不存在的操作的请求将返回一个Global.asax.cs
页面,因为我有以下路线:
404
我使用的是“属性路由”,上面的约定是我处理404的唯一约定。
我只想在routes.MapRoute(
"PageNotFound",
"{*.*}",
new {controller = "Error", action = "NotFound"}
);
中记录严重的系统错误,而不在Application_Error
异常中记录。谢谢!
答案 0 :(得分:0)
最后,我决定只检查Application_Error
中的404,并避免记录这些错误,如下所示:
protected void Application_Error()
{
var ex = Server.GetLastError();
if (ex is HttpException httpEx)
{
var httpCode = httpEx.GetHttpCode();
Context.Response.StatusCode = httpCode;
if (httpCode != (int) HttpStatusCode.NotFound)
{
Logger.Error(ex, "Unhandled HttpException in Application_Error");
}
}
else
{
Context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;
Logger.Fatal(ex, "Unhandled exception in Application_Error");
}
Context.Server.ClearError();
Context.Response.TrySkipIisCustomErrors = true;
}