3

我有一个站点,它使用StackExchange.Exceptional来记录异常。问题是,它不会记录所有异常,就像在我的开发机器上一样。

如果它不会记录任何异常,我会认为某些配置/权限在 Azure 网站上不起作用,可能是模块未加载/工作,但例如,如果我错过了控制器操作,我会记录一个异常:

在控制器“Acme.Controllers.AccountController”上找不到公共操作方法“Logi”。

我已经尝试使用本地发布配置运行站点,它可以正常工作。

据我了解, StackExchange.Exceptional 是 http 模块,它使用以下代码记录未处理的异常:

  protected virtual void OnError(object sender, EventArgs args)
  {
        var app = (HttpApplication)sender;
        var ex = app.Server.GetLastError();

        LogException(ex, app.Context);
  }

https://github.com/NickCraver/StackExchange.Exceptional/blob/master/StackExchange.Exceptional/ExceptionalModule.cs#L36

可能在某些情况下在 Windows Azure 上它没有收到 OnError 事件,有什么想法要检查什么,在哪里搜索线索?

4

1 回答 1

1

通过添加此设置,我设法在本地计算机上复制了相同的行为:

<customErrors mode="On">

只要RemoteOnly模式是默认的,我就没有在本地开发机器上看到问题。不知道为什么,但是当customErrors启用时,一些异常没有通过 http 处理程序记录。

于 2013-07-11T05:45:54.117 回答