无法使用WebAPI2从OWIN环境中检索对象

时间:2015-04-17 13:37:54

标签: asp.net asp.net-web-api2 owin

我正在使用NHibernate和OWIN。我想将我的SessionFactory存储在OWIN中,而不是旧的Global.asax。

在我的OWIN Startup方法中,我做了:

app.CreatePerOwinContext(Of MobLib.MobDataProvider)(AddressOf MobLib.MobDataProvider.CreateProvider)

我在调用CreateProvider时设置断点,我可以看到它已成功调用并返回一个对象。

稍后,我需要拉出这个会话工厂并使用它,所以我这样做:

Dim context As Microsoft.Owin.IOwinContext = HttpContext.Current.GetOwinContext
Dim x As MobLib.MobDataProvider = context.Get(Of MobLib.MobDataProvider)("")

从上下文中提取的唯一选项需要一个键,但在每个OWIN Context创建对象时不需要一个键。另外,我已经查看了OWIN上下文中的Environment,但我看不到任何看起来像我的数据提供者的内容。

我觉得我缺少一些基本的东西。

更新

我在Extra字典中找到了该对象,而且密钥非常复杂。

Viewing of the Context variable

使用这个,我现在可以用它来运行它:

Dim x As MobLib.MobDataProvider = context.Get(Of MobLib.MobDataProvider)("AspNet.Identity.Owin:MobLib.MobDataProvider, MobLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")

但这似乎是一个可怕的解决方案。还有更好的方法吗?

0 个答案:

没有答案