这一定很简单并且已经回答了,但是我已经浪费了很多时间。我不知道如何在错误输入的地址上获取错误页面。此外,我不希望重定向,而是保留 URL。我尝试了许多 CustomErrors、HttpErrors 和 Application_Error 的组合,但对于不存在的控制器没有任何作用——取决于 HttpErrors,我总是得到 IIS 404.0 页面或只是一个空的 404 响应。在 IIS 7.5、MVC 3 上运行。
问问题
600 次
2 回答
0
我使用以下路由来确保所有不匹配任何其他路由的请求都落在那里,然后您可以很容易地处理这种情况:
// this route is intended to catch 404 Not Found errors instead of bubbling them all the way up to IIS.
routes.MapRoute(
"PageNotFound",
"{*catchall}",
new { controller = "Error", action = "NotFound" }
);
映射最后一个(在任何其他语句之后包括该.MapRoute
语句)。
于 2012-04-07T03:17:22.390 回答
0
我不记得我在哪里得到了解决方案。但这里是处理错误的代码: 首先,创建一个 ErrorController:
public class ErrorController : Controller
{
//
// GET: /Error/
public ActionResult Index()
{
return RedirectToAction("Index", "Home");
}
public ActionResult Generic()
{
Exception ex = null;
try
{
ex = (Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
}
catch { }
return View();
}
public ActionResult Error404()
{
return View();
}
}
其次,打开全局文件并添加以下代码:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Application[HttpContext.Current.Request.UserHostAddress.ToString()] = ex;
}
第三,更改 webconfig 中的 customerror:
<customErrors mode="Off" defaultRedirect="/Error/Generic">
<error statusCode="404" redirect="/Error/Error404"/>
</customErrors>
更多:我又创建了一个错误布局。它使事情更加清楚。:)
希望这对您有所帮助。
于 2012-04-08T02:43:04.433 回答