gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:59:48 29 4
gpt4 key购买 nike

如何获取 <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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com