如何在目录级别配置自定义Http模块?

时间:2014-01-06 11:28:14

标签: asp.net asp.net-mvc iis web-config httpmodule

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

现在我创建了一个自定义的http模块。将此添加到根web.config时,模块正常工作。将http模块配置添加到目录级web.config(例如/Applications/MyApplication/web.config)时,模块不再被初始化。

这是正常工作的root配置。

<httpModules>
  <add name="MyFirstHttpModule" type="CustomModule.CustomModule,CustomModule" />
</httpModules>

请帮助

1 个答案:

答案 0 :(得分:1)

ASP.net配置已经支持配置中断。您只需在指定的文件夹中添加新的web.config。

ASP.NET网站的Web.config是继承链的一部分。您网站的子文件夹可以包含Web.config。这允许在站点级别设置常规设置,并在必要时覆盖它们。基本Web.config中未在子文件夹中重写的任何设置都保持有效,因此“子”Web.config可能非常小。您可以继续嵌套它们,因此子子文件夹可以根据需要获得自己的Web.config。

一个很好的例子是ASP.NET MVC应用程序的View文件夹中的Web.config文件,它可以防止直接查看视图模板

您可以阅读更多here

  

如果收到SubDir1目录中的文件的请求   不存在,ASP.NET开始搜索配置层次结构,   从最本地的Web.config文件开始(位于   当前目录(如果存在)或父目录)。 ASP.NET是   为customErrors搜索错误元素(ASP.NET设置   schemaCode属性等于“404”的Schema元素。一旦   ASP.NET查找404错误的配置设置,即URL   redirect属性作为响应返回。