如何将泛型类注册为IHttpModule

时间:2010-11-09 21:24:06

标签: asp.net fluent-nhibernate

public class NHibernateSessionPerRequest<T>:IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += BeginRequest;
        context.EndRequest += EndRequest;
    }
}

如何在web.config中注册?

2 个答案:

答案 0 :(得分:4)

IIS6:在web.config的system.web部分

<configuration>
  <system.web>
    <httpModules>
      <add name="MyModule" type="My.Namespace.NHibernateSessionPerRequest`1[[My.Namespace.MyType, My.Assembly]], My.Assembly"/>
    </httpModules>
  </system.web>
</configuration>

IIS7:在web.config的system.webserver部分:

<configuration>
  <system.webServer>
    <modules>
      <add name="MyModule" type="My.Namespace.NHibernateSessionPerRequest`1[[My.Namespace.MyType, My.Assembly]], My.Assembly"/>
    </modules>
  </system.webServer>
</configuration>

对于两者,将“My.Namespace”替换为类的名称空间,将“My.Assembly”替换为程序集名称。

答案 1 :(得分:2)

最简单的解决方案是创建一个派生自此类型的具体类型,然后注册:

public class MyActualModule : NHibernateSessionPerRequest<SomeType> {
}

然后在web.config中注册MyActualModule。

或者,您可以将CLR兼容语法用于泛型类型,但它太可怕了,我甚至不会在这里提及它。即使是像你这样的简单类型,其类型名称也可能超过100个字符。

相关问题