0

嗨我编码我的MVC c#应用程序,它都很好,但似乎有一些错误。这是我的第一个应用程序之一,我并不感到惊讶。如何采取mvc c#服务器错误+号码行号

虽然应用程序是内部的,所以我确实从用户那里得到了很好的反馈。

他们这样做给我的屏幕截图“服务器错误........应用”

这给了我控制器作用,这确实有助于缩小误差。 但是,如何将行尾的+号码转换为实际行号。 我知道这是某种字节偏移量,但大致了解行号会有所帮助。有插件或我可以使用的东西吗?

或者还有另一种方法来处理这些。我有一个基本控制器,所有的控制器扩展 - 我见过一些事情,说你可以用它来写入一个文件,给你关于错误的信息。如果我将它制作成一个通用文件(类似于php错误文件),那么这将帮助我创建任何应用程序。

+0

您是否从用户那里得到了他们在错误发生时所做的反馈?你是否利用'try ... catch'模式? –

+0

您是否在web.config中设置了? – User3250

+0

@VivekSign - 是的 - 但我可以做更多的细节。 –

回答

1

您可以在Global.asax中处理Application_Error()方法中的服务器错误。创建一个精心设计的错误页面并将其保存在项目中的某个位置。在全局asax中创建一个方法并在其中放置错误处理代码。请参阅下面的示例代码。

protected void Application_Error() 
{ 
    if (httpContext.AllErrors != null) 
    { 
     // you can handle message 
     var message = HttpUtility.HtmlEncode(httpContext.AllErrors[0]); 
     //you can redirect ugly server error page to the one you created 
     httpContext.Response.Redirect($"~/Error/Global"); 
    } 
} 
+0

虽然这在错误页面上放了一个漂亮的绷带,它如何帮助他修复错误? –

+0

@MadMyche正如我在上面的代码中的注释中所解释的,httpContext.AllErrors [0]给出了错误细节中的行号。 – hhk

+0

但它应该提供与YSOD相同的信息。 OP需要学习的是如何使用这些信息。 –

0

只是发展在什么hhh的答案在这里。 这是我最后得到的结果。

protected void Application_Error() 
     { 
      if (this.Context.AllErrors != null) 
      { 
       var p = Path.Combine(Server.MapPath("~"), "Errors.log"); 

       var message = DateTime.Now.ToString(); 
       message = message + " " + this.Context.User.Identity.Name; 
       message = message + " " + this.Context.Request.Url; 
       message = message + Environment.NewLine; 

       message = message + "Post"; 
       message = message + Environment.NewLine; 

       string[] keys = this.Context.Request.Form.AllKeys; 
       for (int i = 0; i < keys.Length; i++) 
       { 
        message = message+keys[i] + ":" + this.Context.Request.Form[keys[i]]; 
        message = message + Environment.NewLine; 
       } 

       message = message + Environment.NewLine; 
       // you can handle message 
       message = message+ HttpUtility.HtmlEncode(this.Context.AllErrors[0]); 
       message = message + Environment.NewLine; 
       message = message + "----------------------------------"; 
       message = message + Environment.NewLine; 



       System.IO.File.AppendAllText(p, message); 


       //you can redirect ugly server error page to the one you created 
      } 
     } 

基本上给你一个带有所有关键变量的文件。 随意修改,如你所愿。