2014-11-08 120 views
0

我想创建一个自定义错误页面来处理验证注册表单时引发的错误。我正在使用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> 
+1

任何机会,“另外,执行第一个异常的自定义错误页时发生另一个异常。”?你有没有试过调试?您是否尝试过设置无法失败的页面(即根本不使用'Model'或在所有必要的空值检查中使用'''')? – 2014-11-08 03:18:39

+0

你的错误控制器是怎样的?它是否正确构建'HandleErrorInfo'模型并将其传递给视图? – 2014-11-08 11:08:35

回答

0

你所得到的“运行时错误'为'Errors.cshtml'页面中Model.Exception的空值。随着型号检查为空值Model.Exception之前使用它。

0

您是否试图在任何地方记录异常,或者您的目的只是重定向到错误页面并显示一些自定义消息?