public class NHibernateSessionPerRequest<T>:IHttpModule
{
public void Dispose() { }
public void Init(HttpApplication context)
{
context.BeginRequest += BeginRequest;
context.EndRequest += EndRequest;
}
}
如何在web.config中注册?
答案 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个字符。