ASP.NET MVC4自定义异常处理C#
问题描述:
我想创建一个自定义错误页面来处理验证注册表单时引发的错误。我正在使用C#ASP.NET MVC 4.我以很多方式尝试了这一切,最终都遇到了各种错误。使用标准错误,系统工作正常,但它不适用于自定义错误。ASP.NET MVC4自定义异常处理C#
当试图简单地做<customErrors mode="on" />
我得到这个错误。
运行时错误
说明:服务器上出现应用程序错误。此应用程序的当前 自定义错误设置阻止查看应用程序错误的详细信息。
当尝试使用<customErrors mode="on" defaultRedirect="~/Views/Shared/Error.cshtml" />
或使用定制控制器以及<customErrors mode="On" defaultRedirect="~/Error' />
我收到此错误
运行时错误
说明:处理您的请求时发生异常。 此外,执行第一个异常的自定义 错误页面时发生另一个异常。该请求已被终止。
这里是来自控制器的适当的代码
[HttpPost]
public ActionResult Confirm(User data)
{
Boolean error = false;
User newUser = new User(data);
if (ModelState.IsValid)
{
foreach (User u in _users)
{
if (newUser.email.Equals(u.email))
{
error = true;
}
}
if (error == true)
{
throw new Exception("That email already exists!");
}
_users.Add(newUser);
}
else
{
throw new Exception("Invalid data entry, please try again.");
}
return RedirectToAction("Login", "Countdown");
}
Errors.cshtml(错误控制器返回一个相似的视图)
@model System.Web.Mvc.HandleErrorInfo
<div class="container">
<div class="row">
<div class="col-xs-1">
<img src="http://i1382.photobucket.com/albums/ah259/rogha189/running-stopwatch-1_zps95faa3c7.jpg" "></div>
<div class="col-xs-1 col-xs-offset-1">
<h3>An Error has occurred.</h3>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-xs-offset-3">
@if (Model != null)
{
<p>@Model.Exception.Message</p>
}
</div>
</div>
答
你所得到的“运行时错误'为'Errors.cshtml'页面中Model.Exception的空值。随着型号检查为空值Model.Exception之前使用它。
答
您是否试图在任何地方记录异常,或者您的目的只是重定向到错误页面并显示一些自定义消息?
任何机会,“另外,执行第一个异常的自定义错误页时发生另一个异常。”?你有没有试过调试?您是否尝试过设置无法失败的页面(即根本不使用'Model'或在所有必要的空值检查中使用'''')? – 2014-11-08 03:18:39
你的错误控制器是怎样的?它是否正确构建'HandleErrorInfo'模型并将其传递给视图? – 2014-11-08 11:08:35