在' /'中查看"服务器错误的详细信息应用"在IIS服务器

时间:2016-08-22 09:25:04

标签: asp.net .net iis

我的用户报告说,他登录网络后无法进入网页,只显示该页面

  

' /'中的服务器错误应用

有没有办法让我可以在IIS服务器中看到错误的详细信息,因为我不想更改web.config以显示用户显示的详细信息

谢谢!

3 个答案:

答案 0 :(得分:1)

看看ELMAH http://elmah.github.io/

您可以将DLL添加到项目中,并在Web配置中配置连接字符串。然后,这会将所有错误记录到数据库表中,并显示当时发生的情况。它甚至可以告诉您页面上的文本框中填充了什么,这对于跟踪用户当时键入的内容非常有用。

如果失败,请尝试挂钩global.asax文件中的Application_Error事件。我使用的代码如下,并在发生服务器错误时向我发送电子邮件:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when an error occurs

    Dim errorMessage As New StringBuilder
    Dim serverException As Exception = Server.GetLastError

    errorMessage.Append("<h1 style=""color:red;font-size:18pt;font-family:Arial;font-weight:normal;"">Server Error In NewmanWeb</h1>")
    errorMessage.Append("<hr width=""100%"" size=""1"" color=""silver"">")
    errorMessage.Append("<h2 style=""color:maroon;font-size:14pt;font-style:italic;font-family:Arial;font-weight:normal;"">" & serverException.Message & "</h2>")

    errorMessage.Append("<b>Exception Type:</b> " & serverException.GetType().ToString() & "<br />")

    If serverException.InnerException IsNot Nothing Then
        errorMessage.Append("<b>Inner Exception Type:</b> " & serverException.InnerException.GetType().ToString() & "<br />")
        errorMessage.Append("<b>Inner Source: </b>" & serverException.InnerException.Source & "<br />")
        errorMessage.Append("<div style=""background:#ffffcc;font-family:Consolas,Monospace;padding:0.5em;font-size:11pt;""")
        errorMessage.Append("<pre>" & serverException.InnerException.Message & "</pre><br />")
        If serverException.InnerException.StackTrace IsNot Nothing Then
            errorMessage.AppendLine("<pre>" & serverException.InnerException.StackTrace & "</pre><br />")
        End If
        errorMessage.Append("</div><br />")
    End If

    If serverException.StackTrace IsNot Nothing Then
        errorMessage.Append("<b>Stack Trace: </b><br />")
        errorMessage.Append("<div style=""background:#ffffcc;font-family:Consolas;padding:0.5em;font-size:11pt;""")
        errorMessage.Append("<pre>" & serverException.StackTrace & "</pre>")
        errorMessage.Append("</div>")
    End If

    'Send email code here

    Server.Transfer("~/Error.aspx")
End Sub

答案 1 :(得分:0)

如果您不想配置ELMAH,可以查看IIS日志。也许使用IIS团队中的Log Parser之类的东西来编写日志文件之上的简单查询。

完成后,我强烈建议您set up ELMAH on your website。下次出现这样的问题时,这可以节省您的费用:)

答案 2 :(得分:0)

确定导致错误的页面的一个很好的起点是使用以下Log Parser查询从IIS日志中提取感兴趣的行

::List of 500 errors
::------------------
logparser -i:IISW3C -rtp:-1 -o:NAT -headers:OFF -iw:ON "SELECT * FROM C:\inetpub\your-website.com\ex*.log TO c:\500Errors.txt WHERE (Extract_Extension(To_Lowercase(cs-uri-stem)) IN ('aspx')) AND cs-status >= 500)"

此外,要了解有关 CAUSE 的更多信息,您可以查询 Windows事件日志以查找“WAS”流程引发的错误列表( Windows激活服务):

logparser.exe -i:EVT -rtp:-1 -o:NAT -headers:OFF -iw:ON "SELECT TimeGenerated,EventID,EventType,EventTypeName,EventCategory,EventCategoryName,SourceName,Strings,Data,Message,ComputerName,SID,EXTRACT_TOKEN( TO_LOWERCASE( RESOLVE_SID(Sid) ), 1, '\\') AS UsernameMessage FROM \\YourMachineName\System TO c:\WindowsEventLogWASerrors.txt WHERE TimeGenerated > '2016-07-12 00:00:00' AND EventType IN (1;2;4) AND SourceName = 'WAS' ORDER BY TimeGenerated DESC"

只需在以下查询中替换 [YourMachineName] ,然后自定义您感兴趣的时间范围( [TimeGenerated] 字段)。

注意: [EventType] 值的含义如下:

    1. 错误
    1. 警告
    1. 信息