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 
      } 
     } 

基本上給你一個帶有所有關鍵變量的文件。 隨意修改,如你所願。