我正在使用 Umbraco 开发一个 Web 应用程序。我创建了一个名为 PageNotFound 的内容,并且在 umbracoSettings.config 文件的错误部分中,我将其节点 id 设置为 404 error404。问题在于,在 IIS 7 中,IIS 总是在 web.config 中查找 HttpErrors 部分,而不关注 umbracoSettings.config。
我应该怎么办?
我正在使用 Umbraco 开发一个 Web 应用程序。我创建了一个名为 PageNotFound 的内容,并且在 umbracoSettings.config 文件的错误部分中,我将其节点 id 设置为 404 error404。问题在于,在 IIS 7 中,IIS 总是在 web.config 中查找 HttpErrors 部分,而不关注 umbracoSettings.config。
我应该怎么办?
在您的 web.config(system.webServer 部分)中,您可以告诉站点将所有错误处理传递给应用程序:
<httpErrors existingResponse="PassThrough" />
这样做的缺点是,Umbraco 只处理未找到的 .aspx 页面。
您可以通过执行以下操作来使其变得更好:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/non-existing-page.aspx" responseMode="ExecuteURL" />
</httpErrors>
不存在的page.aspx 在 Umbraco 中尚不存在,因此它会触发 404(因为它具有 aspx 扩展名)并且.. presto:Umbraco 完美地处理了 404!
500 错误在我添加之前不起作用
existingResponse="Replace"
像那样
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" path="/non-existing-page.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="error.html" responseMode="File" />
</httpErrors>