asp.net 自定义错误页面不起作用
Posted
技术标签:
【中文标题】asp.net 自定义错误页面不起作用【英文标题】:asp.net Custom error page not working 【发布时间】:2016-05-03 09:58:57 【问题描述】:我在 IIS8.5 上有一个自定义错误页面。有时错误页面本身会抛出异常:
对象引用未设置为对象的实例。
这是我背后的代码的一部分:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
HttpContext.Current.Response.StatusCode = 500
'Dim CurrentException As Exception = Server.GetLastError()
'virheettxt.text = CurrentException.Message
Dim hostName = System.Net.Dns.GetHostName()
Dim ctxOBJ As HttpContext
Dim exceptionOBJ As Exception
Dim errorInfoTXT As String
ctxOBJ = HttpContext.Current()
exceptionOBJ = ctxOBJ.Server.GetLastError()
errorInfoTXT = " <br>Offending URL: " & iif(Not ctxOBJ Is Nothing, ctxOBJ.Request.Url.ToString(), "ei saatavilla") &
"<br>Source: " & iif(Not exceptionOBJ Is Nothing, exceptionOBJ.Source.ToString(), "ei saatavilla") &
"<br>Message: " & iif(Not exceptionOBJ Is Nothing, exceptionOBJ.Message.ToString(), "ei saatavilla") &
"<br>Stack trace: " & iif(Not exceptionOBJ Is Nothing, exceptionOBJ.StackTrace.ToString(), "ei saatavilla") &
"<br>Target Site: " & iif(Not exceptionOBJ Is Nothing, exceptionOBJ.TargetSite.ToString(), "ei saatavilla") &
"<br>Server: " & hostName
Dim virheurlsc = ctxOBJ.Request.Url.ToString()
ctxOBJ.Server.ClearError()
错误来自行:errorInfoTXT = " 违规网址:......
如果有办法捕捉错误行,在某些情况下我真的需要它...?
【问题讨论】:
第二个问题请见Add line numbers to stack trace of ASP.NET web site that is deployed in release mode。 我认为我提到的答案告诉你。 如果我理解这一点,则不可能在单独的自定义错误页面上有行号。它必须在应用程序内部构建吗?经典的asp页面呢?我们正在使用一些并且确实需要来自 aspx(vb) 自定义错误页面上的错误行。 【参考方案1】:问题来自使用Iif
,它同时评估真假情况。改用If() operator 可以防止这种情况发生。
您还应该在尝试使用之前检查ctxOBJ
是否为空,如果您在 If()s 中颠倒真假参数,它会使其更简单一点:
Dim ctxOBJ As HttpContext = HttpContext.Current()
Dim exceptionOBJ As Exception = Nothing
If ctxOBJ IsNot Nothing Then
exceptionOBJ = ctxOBJ.Server.GetLastError()
End If
Dim errorInfoTXT As String = " <br>Offending URL: " & If(ctxOBJ Is Nothing, "ei saatavilla", ctxOBJ.Request.Url.ToString()) &
"<br>Source: " & If(exceptionOBJ Is Nothing, "ei saatavilla", exceptionOBJ.Source.ToString()) &
"<br>Message: " & If(exceptionOBJ Is Nothing, "ei saatavilla", exceptionOBJ.Message.ToString()) &
"<br>Stack trace: " & If(exceptionOBJ Is Nothing, "ei saatavilla", exceptionOBJ.StackTrace.ToString()) &
"<br>Target Site: " & If(exceptionOBJ Is Nothing, "ei saatavilla", exceptionOBJ.TargetSite.ToString()) &
"<br>Server: " & hostName
【讨论】:
以上是关于asp.net 自定义错误页面不起作用的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core kendo ui 网格自定义命令模板不起作用
自定义授权过滤器在 ASP.NET Core 3 中不起作用
ASP.NET 2.0 自定义客户端验证在 Internet Explorer 中不起作用