我正在尝试将自定义错误页面添加到我的Web应用程序中。到目前为止,我已将其添加到元素下的web.config文件中:
<customErrors mode="On" >
<error statusCode="404" redirect="~/404.aspx"/>
<error statusCode="500" redirect="~/500.aspx"/>
</customErrors>
这适用于.NET触及的错误,例如包含.aspx扩展名的url。但是,我还希望为网址显示自定义错误,例如www.example.com/dasda
目前,当我请求上述IIS 7.5等页面时,会显示自己的错误消息。我在元素下添加了这个:
<httpErrors >
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" />
</httpErrors>
我认为这会使IIS显示自定义错误页面而不是默认页面,但似乎并非如此。
我知道我可以在IIS中设置自定义错误页面,但对于我的情况来说,理想的解决方案是在web.config中配置它。
我已尝试将此添加到Page_Load事件的自定义错误页面中,如建议的here:
Response.TrySkipIisCustomErrors = true;
然而,它并未阻止默认IIS页面显示以代替我的自定义错误页面。我也尝试过建议here:
<httpErrors >
<remove statusCode="404" subStatusCode='-1' />
<error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
<remove statusCode="500" subStatusCode='-1' />
<error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
</httpErrors>
但这也行不通。
那么有没有办法通过配置web.config文件中的设置来阻止IIS显示默认错误页面?
答案 0 :(得分:14)
我遇到的问题是默认情况下有一个属性errorMode,其中包含以下选项:DetailedLocalOnly,Custom或Detailed。
如果errorMode属性未按照我的方式进行指定,则默认为DetailedLocalOnly(ref)。这意味着我不会看到显示的自定义错误。
有效的配置设置是:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode='-1' />
<remove statusCode="500" subStatusCode='-1' />
<error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" />
<error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" />
</httpErrors>
errorMode =“Custom”可以方便地测试自定义页面是否正常工作,但是当省略或显式设置为errorMode =“DetailedLocalOnly”以进行调试时,它可能更方便。
答案 1 :(得分:0)
我认为您需要强制IIS将CustomErrorModule用于用户请求的任何资源。 尝试将以下内容添加到您的网络配置
<modules>
<add name="CustomErrorModule" type="customErrorModule" preCondition="" />
</modules>
还可以查看以下链接