我的web.config中有以下内容:
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="Error/NotFound" />
</customErrors>
我有一个
[HandleError]
在我的HomeController类的顶端。为了测试,我创建了一个简单抛出异常的操作。。它会重定向到我的
ErrorController/Index
方法,但是当它到达绑定到HandleErrorInfo的视图时,我的模型为空,因此不知何故我丢失了对错误的引用。
我确信这与在重定向中丢失的错误有关,所以我想看看我是否遗漏了什么,以及是否有人有建议,我可以有一个显示Stacktrace和错误消息的视图。
发布于 2013-05-08 20:20:41
我已经用这小段代码向用户展示了已处理的错误页面。是否找不到页面或发生了某些其他错误。
void Application_Error(object sender, EventArgs e)
{
// this value can be fetched from config or depend on DEBUG smybol
if (!handleErrors)
return;
var error = Server.GetLastError();
var code = (error is HttpException) ? (error as HttpException).GetHttpCode() : 500;
if (code == 404)
{
// do something if page was not found. log for instance
}
else
{
// collect request info and log exception
}
// pass exception to ErrorsController
Request.RequestContext.RouteData.Values["ex"] = error;
// execute controller action
IController errorController = new ErrorsController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), Request.RequestContext.RouteData));
}
errors控制器看起来像这样。如果您需要详细的异常信息,可以通过RouteData访问
public class ErrorsController : Controller
{
/// <summary>
/// Page not found
/// </summary>
/// <returns></returns>
public ActionResult Http404()
{
return View();
}
/// <summary>
/// All other errors
/// </summary>
/// <param name="actionName"></param>
protected override void HandleUnknownAction(string actionName)
{
// in case detailed exception is required.
var ex = (Exception) RouteData.Values["ex"];
return View();
}
}
您可以为每个http代码添加不同的视图。只需实现操作Http{Code}
https://stackoverflow.com/questions/16312588
复制相似问题