Asp.net MVC web.config 中的客户错误
Customer Error in Asp.net MVC web.config
在我的 MVC Web 应用程序中,我需要一个 404 页面来处理所有错误。我正在编辑 web.config 文件,其中这一行:
<customErrors mode="On">
<error redirect="/error/404" statusCode="404" />
</customErros>
可以,但在浏览器中 url 我看到了 URL/error/404。我怎样才能看到被调用的URL?
谢谢。
customErrors
节点实际上比 httpErrors
旧,所以试试这个。确保您的 web.config
中有这些节点作为 system.webServer
节点的子节点:
<httpErrors>
<error statusCode="404" path="/error/404" responseMode="ExecuteURL" />
</httpErrors>
或者,您可以使用 customErrors
以两种方式执行此操作:
一是修改个别error
节点,二是修改customErrors
节点。我不记得其中之一现在是否已过时,但请随意尝试两者。
<error statusCode="404" path="/error/404" responseMode="ExecuteURL"/>
或
<customErrors mode="On" redirectMode="ResponseRewrite">
如果上述方法不起作用,则可能会出现其他问题。您检查过 IIS 日志了吗?
链接
我在 global.asax 中使用 Application_error 部分求解。我添加了这个方法
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
{
Response.Clear();
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController controller = new CommonController();
var routeData = new RouteData();
routeData.Values.Add("controller", "Common");
routeData.Values.Add("action", "PageNotFound");
var requestContext = new RequestContext(
new HttpContextWrapper(Context), routeData);
controller.Execute(requestContext);
}
}
这项工作很好。问题来自控制器:.i.e.如果我没有找到数据库记录,我想要 return 带有默认错误页面的 404 错误。我还想在浏览器中显示名为 url 的原始文件,而不是重定向 url。使用 return 视图();在控制器中,这不会发生。我该如何解决?谢谢
在我的 MVC Web 应用程序中,我需要一个 404 页面来处理所有错误。我正在编辑 web.config 文件,其中这一行:
<customErrors mode="On">
<error redirect="/error/404" statusCode="404" />
</customErros>
可以,但在浏览器中 url 我看到了 URL/error/404。我怎样才能看到被调用的URL?
谢谢。
customErrors
节点实际上比 httpErrors
旧,所以试试这个。确保您的 web.config
中有这些节点作为 system.webServer
节点的子节点:
<httpErrors>
<error statusCode="404" path="/error/404" responseMode="ExecuteURL" />
</httpErrors>
或者,您可以使用 customErrors
以两种方式执行此操作:
一是修改个别error
节点,二是修改customErrors
节点。我不记得其中之一现在是否已过时,但请随意尝试两者。
<error statusCode="404" path="/error/404" responseMode="ExecuteURL"/>
或
<customErrors mode="On" redirectMode="ResponseRewrite">
如果上述方法不起作用,则可能会出现其他问题。您检查过 IIS 日志了吗?
链接
我在 global.asax 中使用 Application_error 部分求解。我添加了这个方法
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
{
Response.Clear();
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController controller = new CommonController();
var routeData = new RouteData();
routeData.Values.Add("controller", "Common");
routeData.Values.Add("action", "PageNotFound");
var requestContext = new RequestContext(
new HttpContextWrapper(Context), routeData);
controller.Execute(requestContext);
}
}
这项工作很好。问题来自控制器:.i.e.如果我没有找到数据库记录,我想要 return 带有默认错误页面的 404 错误。我还想在浏览器中显示名为 url 的原始文件,而不是重定向 url。使用 return 视图();在控制器中,这不会发生。我该如何解决?谢谢