我正在尝试运行一个将异常记录到数据库的 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/