c# - Application_Error() 未触发

标签 c# asp.net logging

我正在尝试运行一个将异常记录到数据库的 ASP.NET 应用程序。我正在使用 Application_Error 来捕获异常。

在添加连接字符串之前,只是为了测试我的代码(Logger 类和 Global.asax 中的代码),我尝试将错误记录到 Windows 事件查看器。这按预期工作。

但是在将连接字符串添加到 Web.config 文件并添加 ADO.NET 代码后,我尝试运行该应用程序。但是我得到了死亡的黄色屏幕:D

我不知道我的代码有什么问题。我只修改了 Web.config 文件中的 connectionStrings 元素并添加了 ADO.NET 代码。

这是代码。

这是 Page_Load 事件中的 Web 表单代码。 Countries.xml 文件不存在,预计会引发错误。

DataSet dataset = new DataSet();
dataset.ReadXml(Server.MapPath("~/Countries.xml"));
GridView1.DataSource = dataset;
GridView1.DataBind();

应用程序错误

Exception exception = Server.GetLastError();
if (exception != null)
{
Logger.Log(exception);
Server.ClearError();
Server.Transfer("~/Errors.aspx");
}

Web.config

<configuration>
<connectionStrings>
    <add name="DBCS" connectionString="Data Source=.;database=Sample;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
  </connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
</system.web>
</configuration>

我尝试通过在 Global.asax 的 Application_Error 方法中放置一个断点来进行调试,但控件从未到达该点。 异常是由 Page_Load 事件触发的。 Logger 类代码中没有编译错误。 另外,我不想使用 customErrors 路由来解决这个问题。

提前致谢。

这是代码的链接: https://drive.google.com/folderview?id=0B5K22Q9r50wXU0VOQmJKVHBoaDg&usp=sharing

最佳答案

如果你有<customErrors mode="Off" /> 调试时,代码不会到达 Application_Error事件,因为异常立即显示在浏览器中。

如果你想在调试的时候到达Application_Error,你想要启用自定义错误——

<customErrors mode="On" defaultRedirect="~/Error.aspx" />

关于c# - Application_Error() 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296561/

相关文章:

c++ - Boost.Log - 如何配置文本接收器后端以附加到旋转文件

C# DateTime - 如何检查时间部分是否为 NULL?

c# - C# 中的 Httpwebresponse 到 Httpresponsemessage

javascript - ASP.NetRequiredFieldValidator自定义EvaluationFunction属性

c# - ASP.NET 托管 Active Directory RSAT powershell 脚本--DC 挂断

asp.net - 在 Visual Studio 中保存一些 javascript 文件后自动运行 gulp 任务

c# - 在 Dispose(bool) 方法实现中,不应该将成员设置为 null 吗?

C# FindAll VS Where速度

java - Spark Web 框架记录请求和响应

class - 为 JBOSS 类加载启用日志记录