2016-01-27 83 views
0

我有這樣的Ajax調用4文件上傳它在服務器上,並嘗試上傳文件,我得到一個500錯誤。我現在想做的事情是在.NET端添加錯誤日誌記錄來查看究竟是什麼問題,所以我的問題是如何調整我的.NET方法以顯示錯誤。ASP.NET MVC通過Ajax錯誤記錄

我試圖做一個嘗試,趕上像這樣:

[HttpPost] 
     public ActionResult Upload(int customerID, int questionID, string community, int lot) 
     { 

      for (int i = 0; i < Request.Files.Count; i++) 
      { 
       try 
       { 

        var file = Request.Files[i]; 

        string path = Path.Combine(Server.MapPath("~/UploadedFiles"), 
                Path.GetFileName(customerID + "-" + community + lot + "-" + questionID + "-" + file.FileName)); 

        file.SaveAs(path); 
       } 
       catch (Exception e) 
       { 
        Console.Write(e); 
       } 

      } 

      return Json(new { success = true }, 
      "text/plain"); 

     } 

但我怎麼顯示錯誤?

感謝,

回答

1

無需做重大變化的最簡單的事情是寫一個文本文件:

System.IO.File.WriteAllText(@"C:\SomeFolder\error.txt", text); 

確保網站可以寫入該文件夾壽。

How to Write to a Text File on MSDN有更多選項。

(但你應該看看建立正確的錯誤處理和報告到應用程序,例如以下ELMAH)


如果可能的話,你可以重新拋出異常,從而使YSOD將顯示。

catch (Exception e) 
{ 
    throw; 
} 

Elmah是錯誤日誌記錄的選項。

E.g.

catch(Exception e) 
{ 
    Elmah.ErrorSignal.FromCurrentContext().Raise(e); 
} 

另請參閱:how to use ELMAH to manually log errors

0

你可以寫錯誤記錄一個單獨的類,這裏的代碼框架:

public static class ErrorLog 
{ 
    public static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

    public static void LogError(System.Exception ex) 
    { 
     try 
     { 
      log.Error("ERROR", ex); 
     } 
     catch (System.Exception) 
     { 
     } 
    } 
} 

當你使用錯誤日誌類,你可以寫這樣的事情:

try 
    { 
     //Your code here... 
    } 
    catch (Exception ex) 
    { 
     ErrorLog.LogError(ex); 
     throw; 
    } 

OR

ErrorLog.Log.Debug("Debug message plus whatever you want to display here"); 

文件路徑可以是像「c:\ logs \ log.txt」這樣的絕對路徑,也可以是相對於bin的路徑目錄。希望這可以幫助你。