c# - 以编程方式检查 httpErrors errorMode

标签 c# asp.net iis-7 web-config

如何获取 <system.webServer><httpErrors> 中设置的 errorMode 属性的值? web.config 中的元素?

我正在尝试在 ASP.NET Web 应用程序中实现一些“ self 诊断”。当应用程序启动时,它会运行 web.config 中的一些设置并确认它们已正确设置。

虽然在 <system.web><customErrors> 中设置错误模式时这段代码工作得很好元素,

var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.web/customErrors");
Response.Write(errSec.Mode.ToString());

一旦网站部署在 IIS7 上,它就不会工作,现在可以在 system.webServer -> httpErrors 中找到此设置。 .

这行不通:

var errSec = (CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors");

并转换为 CustomErrorsSection似乎也不是个好主意,一定有更好的类型可以使用吗?

我在 IIS.NET 上找到这篇文章,HTTP Errors ,但我希望在不依赖 Microsoft.Web.Administration 库的情况下执行此操作。

有什么建议吗??

更新

好的,根据下面的建议,我尝试了这个:

var errSec = (ConfigurationSection)HttpContext.Current.GetSection("system.webServer/httpErrors");
Response.Write(errSec.SectionInformation.GetRawXml().ToString());

但这也不起作用,errSec对象为空。另外,如果我加载 <system.web><customErrors>使用相同方法的部分,GetRawXml()方法调用失败并显示“此操作在运行时不适用”。异常信息。

我知道如何将整个 web.config 作为 xml 文件加载并查询它以获取我需要的元素。但在我看来,必须有一种更优雅的方法。

如何将 web.config 读取为 xml:

var conf = XDocument.Load(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "web.config");
var errMode = conf.Root.Element("system.webServer").Element("httpErrors").Attribute("errorMode").Value;

...但这太讨厌了!如果在 machine.config 或类似文件中设置了 errorMode 设置,它将不起作用。

最佳答案

(CustomErrorsSection)HttpContext.Current.GetSection("system.webServer/httpErrors") 将不起作用,因为该部分来自 IIS7 配置 schema与 CustomErrorsSection(来自 ASP.NET 配置)不同。 如果您不想依赖 IIS7 程序集(您不应该这样做),唯一的方法是使用 ConfigurationSection对象通过其子元素枚举并获得你想要的。或者您可以直接获取配置文件,将其视为 XML 并读取必要的值。

关于c# - 以编程方式检查 httpErrors errorMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555225/

相关文章:

c# - C# .NET 中的方法或属性之间存在歧义

asp.net - 如何找到有关System.Runtime.InteropServices.COMException的引用? (0x800A08FE)

asp.net - HttpContext.Response.Filter

asp.net-mvc - 重写规则不将 http 重定向到 https

c# - 找不到类型或命名空间名称 'type/namespace'.. - Asp.Net - C#

c# - 一个变量如何同时有两个值?

C# ASP.NET 如何通过代码隐藏修改 CSS 类

asp.net - 请求在此上下文中不可用

asp.net - IIS 7 - IIS 中的身份验证与 web.config 中的身份验证

c# - 有什么方法可以通过 ReSharper 清理删除空白区域吗?