2014-09-21 14 views
0

我在部署的webserver中有一個asp.net 2.0 web應用程序。其中一個功能都有類似下面的代碼: -如何查看在asp.net應用程序中拋出的原始錯誤

...

try 
{ 
//Some System/.net Exception occurred 
} 
catch (Exception ex) 
{ 
//Show custom message 
} 

...

正如你可以看到系統/ .NET異常被捕獲在Catch塊,但實際的異常沒有顯示或記錄在任何地方。如何在不修改代碼的情況下查看發生在web服務器上的實際錯誤?

問題是我沒有源代碼,我不想反編譯DLL並在重新創建代碼後重新部署DLL。

此外,事件日誌中沒有任何記錄。

有沒有一種方法或工具來找出哪些錯誤發生在try ... catch塊中以查看實際的錯誤消息?

+0

如果它沒有記錄,也沒有傳播調用堆棧(應用程序中止),你不能。 – sarepta 2014-09-21 06:43:12

回答

0

評論者是正確的。如果它被抑制,你不能攔截異常。

但是,如果它的傳播調用棧,那麼你可以像這樣添加一個新的IHttpModule和記錄異常:

public class TheLogger : IHttpModule 
{ 
    HttpApplication _ctx; 

    public void Dispose() 
    { 

    } 

    public void Init(HttpApplication context) 
    { 
     _ctx = context; 
     _ctx.Error += _ctx_Error; 
    } 

    void _ctx_Error(object sender, EventArgs e) 
    { 
     var ex = _ctx.Server.GetLastError(); 
     File.AppendAllText("c:\\log.txt", ex.ToString()); 
    } 
} 

添加到記錄在web.config中的引用: -

<system.webServer> 
    <modules> 
     <add name="ExceptionLogger" type="ExceptionLogger.TheLogger, ExceptionLogger"/> 
    </modules> 
    </system.webServer> 
相關問題