繁体   English   中英

无论HTTP错误代码如何如何捕获IIS特定的错误

[英]How to catch IIS specific errors irrespective of HTTP error code

我正在努力捕获IIS本身引发的错误。 我想记录一个IIS错误以及MVC错误。

我正在使用最新版本的ASP.NET MVC 5并在IIS 7.5运行网站并在本地对其进行调试。 我正在通过Visual Studio 2013调试。

我正在尝试使用web.config中的httpErrors标记。 我已经开始测试404错误,但是同样适用于所有错误(500、403等)。我只是需要一个起点,并决定从404错误开始。

我的web.config中具有以下配置:

<system.web>
    <customErrors mode="Off" />
<system.web>

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" path="Http404.html" responseMode="File" />
    </httpErrors>
</system.webServer>

我对URLS尝试了以下操作:

  • www.mywebsite.com/foo/bar在Application_Error方法中捕获了错误并击中了我的断点
  • www.mywebsite.com/test.html该文件不存在。 它没有被我的Application_Error方法捕获,所以我无法记录它。 显示正确的错误页面,与上面相同

这是我的Application_Error方法中的内容:

protected void Application_Error(object sender, EventArgs e)
{
    // I have minimal code here
    // First want to see if I can capture IIS errors here

    Exception exception = Server.GetLastError();
    HttpException httpException = exception as HttpException;
}

如果未在Application_Error方法中捕获到IIS错误,如何记录IIS错误?

我也在动作方法中尝试过此方法,它也未在我的Application_Error方法中捕获,但显示了正确的错误页面:

public ActionResult Index()
{
    return HttpNotFound();
}

转到App-Start文件夹中的FilterConfig.cs。 添加所需的特殊类型的异常类型和错误页面。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new LoggingExceptionFilter());
            filters.Add(new HandleErrorAttribute() { ExceptionType = typeof(HttpException), View = "HttpExceptionError" }, 2);

        }

SHARED文件夹中创建一个名称为HttpExceptionError的视图。

这将处理有关http的所有异常

如果我没记错的话,即使在集成管道模式下,IIS错误处理也与ASP.NET是分开的。 当IIS决定返回非200状态代码时,不应在ASP.NET中创建任何与该错误匹配的HttpException对象,因此,ASP.NET中无法知道IIS将要做什么。

如果您确实要记录所有错误状态,则可以使用C#编写IIS扩展来进行记录,

http://www.iis.net/learn/develop/runtime-extensibility/developing-a-module-using-net

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM