在Global.asax中,有没有优雅地处理SQL超时的方法,并在请求页面上显示一条消息来解释错误?我知道Global.asax有Application_Error和Error事件,但我不确定我可以使用哪个(如果有的话)来完成此操作。我可以在遇到SQL超时的页面上显示来自Global.asax的警报吗?
相关,我可以访问引发Global.asax正在处理的错误的页面实例吗?
谢谢!
在Global.asax中,有没有优雅地处理SQL超时的方法,并在请求页面上显示一条消息来解释错误?我知道Global.asax有Application_Error和Error事件,但我不确定我可以使用哪个(如果有的话)来完成此操作。我可以在遇到SQL超时的页面上显示来自Global.asax的警报吗?
相关,我可以访问引发Global.asax正在处理的错误的页面实例吗?
谢谢!
在global.asax.vb
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
If TypeOf (Context.Error.GetBaseException) Is System.Data.SqlClient.SqlException Then
Dim ex As System.Data.SqlClient.SqlException = Context.Error.GetBaseException
If (ex.Errors.Count = 1 And ex.Number = -2) Then
Server.ClearError()
Response.Redirect(Context.Request.Url.ToString() & "?error=MessageHere")
End If
End If
End Sub
在C#
public void Application_Error(object sender, EventArgs e)
{
if ((Context.Error.GetBaseException) is System.Data.SqlClient.SqlException) {
System.Data.SqlClient.SqlException ex = Context.Error.GetBaseException;
if ((ex.Errors.Count == 1 & ex.Number == -2)) {
Server.ClearError();
Response.Redirect(Context.Request.Url.ToString() + "?error=MessageHere");
}
}
}
你可以使用web.config中的自定义错误as explained here
我没有想到的是,虽然,没有按自定义错误集合只适用于与HTTP相关的错误(因为每个错误元素都有一个StatusCode属性)? – Pwninstein 2009-09-17 17:00:15
我认为defaultRedirect属性处理所有的错误,但我可能是错的。这个问题似乎回答你最初的查询:http://stackoverflow.com/questions/1227632/asp-net-2-0-best-practice-for-writing-error-page – Locksfree 2009-09-17 17:11:28
我最终做了类似于你的东西只是发布,除了代替Response.Redirect,我使用了Server.Transfer(“CustomErrorPage.aspx”,true)。我们有太多页面需要重定向到错误页面,所以我们只有一个显示消息的错误页面。谢谢! – Pwninstein 2009-09-18 21:48:34
很高兴我能帮到你。我们将response.redirect用于错误页面,因为在某些情况下,我们似乎在server.transfer方面存在一些问题。 – Jim 2009-09-21 13:31:47