我在webconfig中添加了以下内容。当站点托管到IIS时它可以工作,但是当我在本地运行时则不行。它给了我错误的web.config错误。
<system.webServer>
<httpErrors errorMode="Custom" defaultPath="ShowError.aspx" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="405" subStatusCode="-1" />
<remove statusCode="406" subStatusCode="-1" />
<remove statusCode="412" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="501" subStatusCode="-1" />
<remove statusCode="502" subStatusCode="-1" />
</httpErrors>
</system.webServer>
答案 0 :(得分:0)
默认情况下会锁定defaultPath
属性,从而导致500.19
错误。你可以:
通过从defaultPath
中删除applicationHost.config
解锁defaultPath
,我不建议这样做,因为您必须在每个开发人员和生产服务器上配置它。
从defaultResponseMode
移除<httpErrors>
和path
,并在每个responseMode
上指定<error>
和<httpErrors errorMode="Custom">
<clear />
<error statusCode="404" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="403" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="401" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="405" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="406" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="412" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="500" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="501" responseMode="ExecuteURL" path="ShowError.aspx" />
<error statusCode="502" responseMode="ExecuteURL" path="ShowError.aspx" />
</httpErrors>
,如下所示:
httpErrors
单独指定每个状态代码似乎过分,但使用400
时没有其他办法。我建议你添加subStatusCode="-1"
(错误请求)。
一些旁注:
您可以省略-1
,因为subStatusCode
是<clear />
的默认值。
如果您要删除/替换所有默认的IIS错误页面,您也可以使用errorMode="Custom"
。
您可能希望在错误页面正常工作时删除errorMode="DetailedLocalOnly"
,因为这会隐藏开发人员的错误详细信息,从而降低调试时的工作效率。只有远程请求才会返回一个好的错误页面,这是默认值(responseMode="Replace"
)的作用。
如果无法让错误页面生效,请尝试urls
。出于与上述相同的原因,您还希望避免在开发人员环境中使用它。
答案 1 :(得分:-1)
如果您有自定义错误页面,请尝试以下操作:
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" responseMode="ExecuteURL" path="/Error/AccessDenied" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/InternalServerError" />
</httpErrors>
如果您想在本地设置自定义错误页面,可以将 DetailedLocalOnly 更改为自定义。