【发布时间】:2019-06-02 08:32:12
【问题描述】:
我需要一个自定义错误页面来处理所有 http 错误。当发生http错误时,页面应显示自定义页面,其内容必须根据http错误状态码动态生成。 当发生特定的 http 错误时,我一半设法显示自定义 html。例如 404。但是有两个问题。 1.我需要重定向到一个.cshtml,所以我可以对响应做一些处理,并根据http错误状态码创建内容。 2. 我需要一种方法将所有错误重定向到这个 .cshtml 文件。
我已经阅读了文档并在 SO 中搜索了类似的问题,都关注了它们,但没有任何进展。
目前我在web.config 中有以下几行:
<httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="CustomError.htm">
<clear />
<error path="CustomError.htm" responseMode="File" statusCode="403"/>
</httpErrors>
这将显示文件CustomError.htm 的内容,该文件位于文件web.config 的同一路径中。
但是当我阅读文档时,我希望这个配置可以工作:
<httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="CustomError.htm">
<clear />
</httpErrors>
但它没有显示 CustomError.htm 文件的内容,而是显示一个空白页面,其中包含以下语句:
You do not have permission to view this directory or page.
即使是处理单个 httpError,我也无法使用 .cshtml,我不得不使用 html 文件。
我实际上有以下 cshtml 文件:Views/Error/PageNotFound.cshtml
它有一个控制器和一个 actionResult 方法,称为:PageNotFound 现在,当我这样做时:
<httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="CustomError.htm">
<clear />
<error path="~/Error/PageNotFound" responseMode="ExecuteURL" statusCode="404"/>
</httpErrors>
然后,浏览器会抛出未找到的错误。
当我将 responseMode 更改为 Redirect 时,路径会一遍又一遍地附加到现有的 url 中并且不起作用。
正如您在标签中看到的,我在 Windows 10 上使用 asp.net mvc 和 IIS 10。
那么有什么帮助吗?
【问题讨论】:
标签: c# asp.net-mvc http-error iis-10