我的测试服务器上有一个问题是抛出异常,我注意到它没有记录任何应用程序见解,所以首先尝试在我的本地计算机上进行调试。我设法复制了这个问题,并且在我的DEV应用程序见解中看到我记录了服务器异常。
所以我回到我的测试应用程序洞察并再次复制问题,但仍然没有记录错误(即使在一个小时左右)。
但是我可以看到它将它们记录为" Failed Requests",而不是服务器异常。没有服务器异常,我无法看到堆栈跟踪/错误消息。
我正在使用Log4Net app insights扩展来记录这些异常。它显然不是代码问题,因为在这两种情况下都运行相同的代码。所以我查看了配置问题。
我的log4net.config和applicationinsights.config没有从Dev到Test(或者prod)的转换。他们保持不变。
我的Web.config只有一个转换来删除debug = true作为标准。
我在Azure中设置了一些环境属性(使用Azure网站),但实际应用程序更改中唯一的一个是AppInsightsInstrumentation键,用于将其切换到不同的AppInsights。但是我知道这个键是正确的,因为我记录了一些东西,而不是其他东西。
答案 0 :(得分:0)
这是答案(Kinda)
我在Basecontroller中记录异常,这在我的本地机器上工作正常,我可以通过调试。
但是当我远程推送时会发生什么,.net开箱即用的错误处理开始了。特别是全局的“HandleErrorAttribute”(检查你的FilterConfig.cs)。这似乎捕获并吞噬了异常。如果您希望覆盖此行为,还有很多其他的讨论,主要是在讨论其他日志工具(如Elmah)时。
我在测试环境中只看到这个的原因是因为CustomErrors默认为remoteOnly。所以我只看到它没有记录,因为它不在我的机器上。
因为我自己处理错误,所以我可以从我的FilterConfig.cs中删除这一行
filters.Add(new HandleErrorAttribute());
现在应该记录服务器异常(我现在还处理在我的BaseController中向用户显示一个很好的错误页面)