2012-04-02 124 views
3

我正在构建ASP.NET MVC3应用程序,并且除了标准的MVC异常处理机制之外我想在Application_Start中出现错误并抛出未处理的异常时显示静态html错误页面那里。IIS7环境中的Application_Start异常处理

我刚加入

<customErrors mode="On" defaultRedirect="Error.htm"> 

和预期重定向Error.htm在所有 “错误” 的情况。它适用于Visual Studio开发服务器,但根本无法使用IIS7(我看到标准的黄色屏幕显示“为了使这个特定的错误消息的细节可以在...上看到”)。看起来,当在Application_Start中引发异常时,ASP.NET重定向到Error.htm,并且此时IIS再次调用Application_Start方法,在那里同样的异常再次抛出aaa并欢迎无限循环。

有什么方法可以解决这个问题?可以在不更改IIS设置的情况下完成吗?如果不是,应该如何在IIS端正确完成?

回答

-1

比从未更好的迟到。这是处理错误的标准方式:

testproject \查看\共享\ Error.cshtml

@model System.Web.Mvc.HandleErrorInfo 
@{ 
    ViewBag.Title = "Error"; 
} 
<p>an error occurred</p><br /> 
<p>Try again.Go on this <a href="javascript:history.go(-1)">link</a></p> 

testproject \ \控制器TestController.cs

namespace testproject.Controllers 
{ 
    [HandleError] 
    public class TestController : Controller 
    {} 
} 

testproject \ Web.config中

<system.web> 
    <customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml" /> 
</system.web>