在web.config中注册httpModules

时间:2009-09-18 18:12:59

标签: c# asp.net

我正在尝试在web.config文件中注册自定义HttpHandler。 MSDN's 示例显示了一个被注释掉的条目......嗯这个条目效果不好。当我取消注释时,我收到Could not load file or assembly 'HttpModule.cs' or one of its dependencies. The system cannot find the file specified.错误。文件名是HttpModule.cs,类名是MyHttpModule。目前还没有明确的命名空间。

<httpModules>
     <add name="MyHttpModule" type="MyHttpModule, HttpModule" />
<httpModules>

我确信我忽视了显而易见的事实。我需要在某处指定文件路径吗?提前谢谢。

5 个答案:

答案 0 :(得分:19)

我仍在学习很多术语,需要为我详细说明。万一你们需要相同的......

例如:

  • 基类名称和项目名称为TestSite
  • 我的班级所在的名称空间是BusinessLogic
  • 班级名称为PageAuthorization
Web.config文件中的

...

<configuration> 
 <system.web> 
  <httpModules> 
   <add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" /> 
  </httpModules> 
 </system.web> 
</configuration>

在我的情况下,我必须用IHttpModule标记我的课程。该类的定义如下:

public class PageAuthorization : IHttpModule

答案 1 :(得分:14)

type值的格式为{Class}, {assembly}

所以在你的情况下,它应该是MyHttpModule, MyDllName

其中MyDllName是已编译DLL的名称。

答案 2 :(得分:14)

如果您从.Net 4.0 GAC和IIS 6/7经典模式加载自定义模块,则必须使用以下代码

 <system.web>
  <httpModules>
  <add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" />
      </httpModules>
 </system.web>

ClientServHttpModule是自定义模块的命名空间。 您可以从sn.exe app获取公钥令牌。

如果您在集成模式下运行。请使用以下代码

<system.webServer>
        <modules>
            <add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" />
        </modules>
    </system.webServer>

答案 3 :(得分:4)

请注意,登陆此处的人员正在寻找在集成模式下运行的IIS 7及更高版本的配置:

<configuration> 
 <system.webServer> 
  <modules> 
   <add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" /> 
  </modules> 
 </system.webServer> 
</configuration>

答案 4 :(得分:3)

要添加此功能,请务必确保您尝试使用的.dll位于项目bin文件夹中。我遇到了将模块放在一个单独的项目中的问题,但忘记了推送.dll文件。