2014-02-11 120 views
0

我開發了一個使用SQL Server和ASP.NET(VB)前端的建模系統。asp.net sql server錯誤消息

前端用於數據輸入,並在SQL Server Management Studio中運行一些相當有趣的過程以運行計算。

但是系統將被生產化,我將失去對Live後端的訪問。因此,這些過程需要從ASP.NET站點運行。

我的問題是,我將無法跟蹤計算中發生的任何錯誤。

有沒有辦法顯示這些錯誤& /或SQL Server過程在ASP.NET網頁上的SSMS中運行時顯示的任何消息更新?

回答

0

首先,你應該引入適當的錯誤處理。

您可以使用其他庫如log4net將錯誤寫入文件或任何其他來源。

此外.NET還有一個內置的機制來檢索最新的錯誤(Trace.axd)。

您可以在ASP.NET跟蹤here上找到更多信息。

+0

@ user2417642:需要更多幫助嗎? –

0

我不確定這是正確的方式,但我這樣做。

創建這樣一個功能:

 //Log error 
    static public void logError(Exception erorr) 
    { 
     //create/append file with current date as file name 
     string logfile = DateTime.Now.ToString("yyyyMMdd") + ".log"; 
     logfile = Global.logpath + logfile; //logpath is a full folder path defined it the Global.cs file to hold the log files. 
     using (StreamWriter sw = File.AppendText(logfile)) 
     { 
      sw.Write("\r\nLog Entry : "); 
      sw.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString()); 
      sw.WriteLine(" :"); 
      sw.WriteLine(" :Message :{0}", erorr.Message); 
      sw.WriteLine(" :Source :{0}", erorr.Source); 
      if (erorr.InnerException != null) 
       sw.WriteLine(" :Inner Ex:{0}", erorr.InnerException.Message); 

      System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(erorr, true); 
      var stackFrame = trace.GetFrame(trace.FrameCount - 1); 
      sw.WriteLine(" :"); 
      sw.WriteLine(" :Stack :"); 
      sw.WriteLine("   :Line Number :{0}", stackFrame.GetFileLineNumber()); 
      sw.WriteLine("   :Source File :{0}", stackFrame.GetFileName()); 
      sw.WriteLine("-------------------------------"); 
     } 
    } 

然後把你計算在try ... catch塊。像

try 
{ 
    //do my sql.... 
    //............. 
{ 
catch(Exception ex) 
{ 
    logError(ex); 
} 

查看asp.net中的日誌。 創建一個頁面並閱讀日誌文件。

注:我很樂意看到專家對此方法的評論。 謝謝 快樂編碼:)