我正在开发asp网络mvc 5中的新网站。我想创建自定义的404页面,用户试图访问旧网址将被重定向。问题是我想为这个错误页面创建视图并从url中获取参数,试图识别用户试图访问的产品。但我还没有找到解决方案如何创建它。所有编辑webconfig的示例都是这样的:Asp网404页面参数
<defaultRedirect="~/Errors/NotFound" mode="Off">
<error statusCode="404" redirect="~/Errors/NotFound" />
</customErrors>
不会传递参数。我试图禁用自定义错误,并在Global.asax中的变化:
public void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
if (httpException != null)
{
if(httpException.GetHttpCode() == 404)
{
var rd = new RouteData();
rd.Values["controller"] = "Errors";
rd.Values["action"] = "NotFound";
rd.Values.Add("queryString", HttpContext.Current.Request.Url.AbsolutePath);
IController c = new ErrorsController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
}
但它仍然会返回非标准错误页面
我还没有看到重定向到一个错误页面的那种方式之前。你尝试过使用'return RedirectToAction(“NotFound”,“Errors”);'? –
此外,如果您只是将错误页面输入到“http:// localhost:57623/Errors/NotFound”,会发生什么? –
我不相信传递参数的作用(至少不是在每种情况下 - 请记住,如果错误发生在IIS中,重定向发生在甚至调用ASP.NET之前)。但是,[本文](https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging)会覆盖这些选项,因为它们适用于自定义页面和日志记录。请注意,传递参数并不常见,因为最佳做法是记录错误并为每个状态代码显示一个通用页面,否则黑客可以使用网站的输出(参数)来查找漏洞。 – NightOwl888