在我的mvc应用程序中,我通过检查global.asax.cs中的Application_EndRequest()方法中的响应代码并返回自定义404 /错误页面来处理404和505错误,如下所示
protected void Application_EndRequest()
{
if (Context.Response.StatusCode == 404)
{
Response.Clear();
var rd = new RouteData();
rd.Values["controller"] = "Errors";
rd.Values["action"] = "PageNotFound";
IController c = new ErrorsController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
else if (Context.Response.StatusCode == 500)
{
Response.Clear();
var rd = new RouteData();
rd.Values["controller"] = "Errors";
rd.Values["action"] = "ServerError";
IController c = new ErrorsController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
}
我有如下面的错误控制器
public ActionResult PageNotFound()
{
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}
public ActionResult ServerError()
{
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return View("Error");
}
现在,当我在http://mydomain/errors/servererror
地址栏中输入网址时,会显示我当前的自定义错误页面
所以我想通过访问此页面来阻止用户,那么我该如何实现呢?
P.S。 到目前为止,我已经尝试通过配置名为“Errors / ServerError”的路由并将其重定向到其他地方来解决这个问题,但我认为可能还有另一种好方法..