我正在尝试在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>
我确信我忽视了显而易见的事实。我需要在某处指定文件路径吗?提前谢谢。
答案 0 :(得分:19)
我仍在学习很多术语,需要为我详细说明。万一你们需要相同的......
例如:
TestSite
BusinessLogic
PageAuthorization
...
<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文件。