【问题标题】:how to see original error thrown in asp.net application如何查看asp.net应用程序中引发的原始错误
【发布时间】:2014-09-21 06:19:19
【问题描述】:

我在 webserver 中部署了一个 asp.net 2.0 web 应用程序。其中一个函数的代码如下:-

...

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

...

正如您所见,system/.net 异常在 Catch 块中被捕获,但实际异常并未在任何地方显示或记录。如何在不修改代码的情况下查看网络服务器中发生的实际错误?

问题是我没有源代码,我不想在重新创建代码后反编译 dll 并重新部署 dll。

此外,事件日志中没有记录任何内容。

有没有办法或工具找出在 try...catch 块中发生了哪个错误以查看实际的错误消息?

【问题讨论】:

  • 如果它没有被记录,也没有传播调用堆栈(应用程序中止),你就不能。

标签: c# asp.net .net error-handling webserver


【解决方案1】:

评论者是正确的。如果异常被抑制,您将无法拦截它。

但是,如果它正在传播调用堆栈,那么您可以添加一个新的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2013-01-29
    • 2011-04-30
    • 2022-11-24
    • 1970-01-01
    相关资源
    最近更新 更多