Nhibernate 在每个页面请求上调用OWIN Startup

Nhibernate 在每个页面请求上调用OWIN Startup,nhibernate,asp.net-web-api2,owin,Nhibernate,Asp.net Web Api2,Owin,我正在使用OWIN的WebAPI 2项目中实现一个NHibernate会话工厂。下面是我的startup类的一个片段。我注意到每次在调试环境中加载页面时都会调用启动。这似乎非常昂贵,每个应用程序生命周期只应创建一次SessionFactory 我如何避免这种情况?我认为重复的电话造成了问题。我收到的错误似乎与OWIN中多次创建的会话工厂有关 Public Class Startup Public Sub Configuration(app As IAppBuilder)

我正在使用OWIN的WebAPI 2项目中实现一个NHibernate会话工厂。下面是我的startup类的一个片段。我注意到每次在调试环境中加载页面时都会调用启动。这似乎非常昂贵,每个应用程序生命周期只应创建一次SessionFactory

我如何避免这种情况?我认为重复的电话造成了问题。我收到的错误似乎与OWIN中多次创建的会话工厂有关

Public Class Startup
    Public Sub Configuration(app As IAppBuilder)
        GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)

        app.CreatePerOwinContext(AddressOf MobLib.MobDataProvider.CreateProvider)

    End Sub
End Class
更新
我已经确认,
Configuration
只运行一次,但是每次加载页面时都会调用
CreateProvider
。这是故意的吗?

我要回答我自己的问题,而不是删除它来掩饰我的羞耻感——我的意思是,为了子孙后代

一切都按其应有的方式运行,
CreatePerOwinContext
完全按照它所说的去做。它在每次创建上下文时调用函数。对于像
NHibernate SessionFactory
,这不是您想要的,特别是因为这可能会导致多个会话工厂。我不知何故认为OWIN上下文是我应该存储这个单例对象的地方,而事实上它绝对不是


这就产生了一个真正的问题:我应该将初始化代码放在OWIN
Startup
方法中,还是放在
Global.asax
文件中。这是一个完全不同的问题,在很多地方都可以看到。例如:

希望您不是从某个地方自己调用启动类方法的配置方法,因为它是自动可检测的。
Configuration
不是在任何地方显式调用的,只是通过检测。您可以在POC中复制并共享它吗?我真的很想知道为什么会发生这种情况,因为这并不常见。现在就深入研究。我只是希望这是别人犯下的愚蠢错误,可以启发我:)