【发布时间】:2018-04-24 14:54:04
【问题描述】:
IIS 上托管的各种 ASP.NET HTTP 错误的默认描述存储在哪里?可以通过代码访问吗?
EG。 404 的默认错误页面将包含以下文本:
描述:HTTP 404。您正在寻找的资源(或其中之一 它的依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下 URL 并制作 确保拼写正确。
我们可以通过代码读取这个字符串吗?
我可以捕获一个 HttpException(我知道一个 HttpException != HttpError)并执行 .GetHttpCode() 之类的操作,但我还没有看到任何地方详细说明 IIS 错误消息的存储位置以及我是否可以通过代码访问。
如果我不想自己想出自定义错误页面中的默认文本,那就太好了。
更新 1
在其中一个 cmets 之后,我调查了 IIS 以查看其错误页面的配置位置。果然,有一个错误页面目录,默认为例如“%SystemDrive%\inetpub\custerr\\404.htm”,但是这些错误消息与 Web 应用程序显示的不同(我假设由 .NET 生成)。
EG
您要查找的资源可能已被删除,但有其名称 已更改,或暂时不可用。
这些错误页面是托管在 Web 服务器上的物理页面,因此通过代码访问它们不是我想要的选项。
【问题讨论】:
-
仅供参考。如果您依赖文本而不是代码,那么您会发现默认文本不是标准化的,并且可以被大多数网络主机或其托管应用程序覆盖。如果您试图冒泡您的低级 http 传输遇到的错误文本,那么我会对您的最终解决方案感兴趣,因为我从未找到支持 404 和其他 http 响应代码的标准化文本库。
-
我现在不想做任何特别的事情。我只是好奇我们是否可以通过代码访问它们。
-
检查错误页面设置,有一个文件夹。
-
我认为您看到的消息很可能作为资源存储在 System.Web 程序集中
-
@IanGilroy 听起来很合理。我不熟悉访问 .NET 程序集资源,也不熟悉它是否可行(如果可以,建议这样做)。
标签: asp.net .net asp.net-mvc iis