【发布时间】:2016-11-12 18:54:29
【问题描述】:
我正在尝试运行将异常记录到数据库的 ASP.NET 应用程序。我正在使用 Application_Error 来捕获异常。
在添加连接字符串之前,为了测试我的代码(Logger 类和 Global.asax 中的代码),我尝试将错误记录到 Windows 事件查看器。这按预期工作。
但是在将连接字符串添加到 Web.config 文件并添加 ADO.NET 代码之后,我尝试运行该应用程序。但是我得到了黄屏死机:D
我不知道我的代码有什么问题。我只修改了 Web.config 文件中的 connectionStrings 元素,并添加了 ADO.NET 代码。
这是代码。
这是 Page_Load 事件中的 Web 表单代码。 Country.xml 文件不存在,预计会引发错误。
DataSet dataset = new DataSet();
dataset.ReadXml(Server.MapPath("~/Countries.xml"));
GridView1.DataSource = dataset;
GridView1.DataBind();
Application_Error
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
【问题讨论】:
-
您是否也在实现自定义错误页面?您是否确认没有其他可能在 Application_Error 代码之前首先捕获异常的 try-catch 语句?
-
嗨@Ephraim,是的,我正在实现一个自定义错误页面:Errors.aspx。我的代码中没有其他 try catch 块。异常没有得到处理,我看到了黄屏死机。