我正在尝试使用简单的html页面,当503服务无法使用时出现错误。
我在web.config的system.webservers
中使用<httpErrors errorMode="Custom">
<remove statuscode="503" substatuscode="-1">
<error statuscode="503" responseMode="File" path="Views/Shared/IISError.htm">
</httpErrors>
这不行。我停止申请时仍然会收到IIS默认页面。
我正在使用mvc3,razor应用程序。
答案 0 :(得分:7)
我花了一段时间来弄清楚这一点......但我认为这可能会对你有所帮助:
首先,要在IIS 7中配置错误,您需要使用以下部分进行配置:
<system.webServer>
<httpErrors existingResponse="Replace" defaultResponseMode="Redirect" errorMode="Custom">
<remove statusCode="503"/>
<error statusCode="503" responseMode="Redirect" path="Views/Shared/IISError.htm"/>
</httpErrors>
</system.webServer>
此配置有效,但是您可能会收到错误消息,指出您无法覆盖httpErrors
部分,如果是这种情况,请按照以下步骤操作:
打开C:\Windows\System32\inetsrv\config\applicationHost.config
变化:
<section name="httpErrors" overrideModeDefault="Deny" />
要:
<section name="httpErrors" overrideModeDefault="Allow" />
答案 1 :(得分:2)
问题是,您使用的是VisualStudio开发服务器还是IIS7 Express?
如果您使用的是Cassini(VSDS),那么您应该尝试使用
<customErrors mode="On" >
<error statusCode="503" redirect="/Views/Shared/Error.htm"/>
</customErrors>
因为httpErrors是一个仅由IIS7处理的新结构。您可以在What is the difference between customErrors and httpErrors?找到更多信息 和http://www.iis.net/ConfigReference/system.webServer/httpErrors
答案 2 :(得分:1)
根据您的一条评论,您似乎停止了应用池。
如果要停止应用程序池,则无法在web.config中设置自定义错误。您需要在IIS中执行此操作。
答案 3 :(得分:1)
在Mvc 5.1.1和IIS 7.5中,需要使用反斜杠来指示文件响应模式的子文件夹。
C#:
[HttpGet]
[AllowAnonymous]
public ActionResult Login()
{
try
{
var allowLogin = false;
if(allowLogin == false)
return new HttpStatusCodeResult(403);
}
}
的Web.config:
<system.web>
<!--customErrors tag is not required -->
</system.web>
<httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="File" >
<remove statusCode="400" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="6" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="503" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<clear/>
<error statusCode="400" subStatusCode="-1" path="ErrorPages\400.html" />
<error statusCode="401" subStatusCode="-1" path="ErrorPages\401.html" />
<error statusCode="403" subStatusCode="6" path="ErrorPages\Restrict.html" />
<error statusCode="403" subStatusCode="-1" path="ErrorPages\403.html" />
<error statusCode="503" subStatusCode="-1" path="ErrorPages\503.html" />
<error statusCode="500" subStatusCode="-1" path="ErrorPages\500.html" />
</httpErrors>