【问题标题】:Is there a better way to get the proper modules section from the web.config?有没有更好的方法从 web.config 中获取正确的模块部分?
【发布时间】:2011-01-21 00:43:14
【问题描述】:

我用来获取 HTTP 模块的代码基本上是

HttpModulesSection modules = ((SystemWebSectionGroup)config.GetSectionGroup("system.web")).HttpModules;
// Depending on what we need to do...
//modules.Modules.Add(CreateSomeModule());
//modules.Modules.Remove("SomeOtherModule");

这在 IIS7 之前运行良好。迁移命令%SystemRoot%\system32\inetsrv\appcmd migrate config "website/" 将模块移动到system.webServer,所以我的代码现在更新了错误的部分。

是否有内置方法来获取应该修改的正确模块部分?还是我必须添加一个检查 Request.ServerVariables["SERVER_SOFTWARE"] 并根据我返回的字符串返回 system.web/system.webServer

【问题讨论】:

  • 请说明您对模块列表所做的工作。
  • @John,我们创建了一个新的 HttpModuleAction,然后我们将它添加到 HttpModules 集合中。更新了问题以显示更清晰的示例。
  • 你为什么要编辑 web.config?另外,你是从什么代码做的?拥有 web.config 的同一个网站?
  • @John,这不是modules.Modules.Add 所做的吗?它将必要的行添加到 web.config 文件中以引用该模块。该代码位于拥有 web.config 的网站上。这不是我的网站,所以我不能 100% 确定这些模块是如何工作的,除非它们必须在 web.config 中被引用才能工作。
  • 不,通常不会修改 web.config。正如下面 user53870 告诉你的,你只需要修改 Modules 属性

标签: c# asp.net iis httpmodule


【解决方案1】:
HttpContext.Current.ApplicationInstance.Modules

这将返回一个HttpModuleCollection 对象。或者你想知道how to programmatically register HttpModules at runtime

【讨论】:

  • 感谢您的回答,但是这会返回一个 HttpModuleCollection。我需要 HttpModulesSection 以便可以在代码中添加/删除模块。我不认为我需要注册 mdoules,我只需要编辑 web.config。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 2017-01-08
相关资源
最近更新 更多