gpt4 book ai didi

.net - 目录级别 web.config 中的 Asp.net HttpModule

转载 作者:行者123 更新时间:2023-12-04 00:51:17 25 4
gpt4 key购买 nike

我创建了一个自定义 http 模块,并希望将此模块添加到 Web 配置中。 Web 应用程序是一个包含多个“子应用程序”的项目。子应用程序只是一个文件夹,在该文件夹中它有自己的 web.config。我这样做是为了让每个应用程序都有自己的应用程序相关内容、样式表、配置等。

现在我创建了一个自定义 http 模块。将此添加到根 web.config 时,该模块工作正常。将 http 模块配置添加到目录级 web.config(例如/Applications/MyApplication/web.config)时,模块不再初始化。即使 msdn 声明 HttpModules 配置元素也在目录级别工作。任何人都知道如何解决这个问题?

最佳答案

回显 Marvin Smit's comment ,看来配置<modules>根据 <location>web.config简单 不工作 - 不调用以这种方式指定的任何模块。

您可以做的是在根级别指定模块,并由 appSetting 控制它。 ,可以根据需要分层指定和覆盖:

<configuration>


<appSettings>
<add key="UseCustomModule" value="false"/>
</appSettings>


<location path="MyFolder">
<appSettings>
<add key="UseCustomModule" value="true"/>
</appSettings>
<system.webServer>
<modules>
<!-- CANNOT add module at this level, hence the overridden appSetting -->
</modules>
</system.webServer>
</location>

<system.webServer>
<modules>
<add name="CustomnModule" type="MyApplication.CustomModule" />
</modules>
</system.webServer>

</configuration>

然后在 CustomModule 的代码中:
    private static bool ModuleEnabled()
{
bool appSetting;
if (!bool.TryParse(ConfigurationManager.AppSettings["UseCustomModule"],
out appSetting))
appSetting = false;

return appSetting;
}

ASP.NET 将确保 UseCustomModule 的适当值因为我们当前的位置就是我们读到的那个。

关于.net - 目录级别 web.config 中的 Asp.net HttpModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378586/

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