C# OWIN等效于HttpContext.Application属性

C# OWIN等效于HttpContext.Application属性,c#,asp.net,asp.net-web-api,owin,C#,Asp.net,Asp.net Web Api,Owin,我想找到一个与HttpContext.Application属性等效但使用OWIN的属性。我不是在OWIN中寻找HttpContext的等价物,因为我已经知道它是什么,我需要知道应用程序属性的确切等价物是什么 我想做的是在启动时创建一个对象,在对Web API的一些请求中使用它,而不需要再次创建该对象,所以我希望将其保存在内存中 我正在使用: -.Net 4.5 -ASP.NET Web API 2.2 -Microsoft.Owin.Host.SystemWeb 3.0.1 我在Google和

我想找到一个与HttpContext.Application属性等效但使用OWIN的属性。我不是在OWIN中寻找HttpContext的等价物,因为我已经知道它是什么,我需要知道应用程序属性的确切等价物是什么

我想做的是在启动时创建一个对象,在对Web API的一些请求中使用它,而不需要再次创建该对象,所以我希望将其保存在内存中

我正在使用: -.Net 4.5 -ASP.NET Web API 2.2 -Microsoft.Owin.Host.SystemWeb 3.0.1


我在Google和StackOverflow上搜索过,发现我应该使用
CreatePerOwinContext
方法,但我不知道当我在Web API上收到客户端的请求时,如何在上下文中获取设置的值

在旧的ASP.NET主机中,我曾使用以下命令:


var myVariable=HttpContext.Application[“myVariable”]

如果您使用
CreatePerOwinContext
创建类型为
myType
的实例
myVariable
,那么您应该能够使用如下内容:

HttpContext.GetOwinContext().Get<MyType>()
HttpContext.GetOwinContext().Get()
返回值将为
myVariable
,如果不存在,则为默认返回值

见:


但是,请注意,
CreatePerOwinContext
仍在为每个请求创建指定对象的新实例,因此您需要找出一种方法来传递
MyType
的内存中实例,作为由
CreatePerOwinContext
调用的静态
Create
方法的一部分


或者,在调用
Application\u Start()
的过程中,您可以在
Global.asax中的
WebApiApplication
类上设置一个公共实例,然后在需要时抓取它,但这有点。。。嗯

可能重复@2kay谢谢,但这个问题并不能解决我的问题。我要的是一个与HttpContext.Application
等价的应用程序,以及如何使用OWIN从中获取值,您所谈论的问题就是如何使用它进行身份验证。似乎CreatePerOwinContext并不是我需要的更好的解决方案,所以我将寻找另一个解决方案。但是我想问你一个问题,HttpContext.GetOwinContext().Get()需要一个键参数,但是在创建CreatePerOwinContext时,它不需要键,只需要一个创建方法,所以我可以在哪里设置键?谢谢。
CreatePerOwinContext
与一个静态方法一起使用,该方法返回您要查找的类型的实例。例如,查看具有标识的基本ASP.NET项目如何在
Startup\u Auth
中使用
CreatePerOwinContext
,然后找到在任何
applicationBContext
ApplicationUserManager
上定义的静态
Create
方法