如何在启动时获取 HttpContext.Current.GetOwinContext()
how to get HttpContext.Current.GetOwinContext() in startup
我很了解这个问题,但我无法解决这个问题,所以我想在这个网站上创建一个新问题。
HttpContext.Current.GetOwinContext();
我想用上面的代码获取 GetOwinContext 值。以上代码在我的 startup.cs
[assembly: OwinStartupAttribute(typeof(OwinTest.Startup))]
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
var c = HttpContext.Current.GetOwinContext();
}
}
我收到这个错误
//未在上下文中找到 owin.Environment 项目
但是 var c = HttpContext.Current.GetOwinContext();
在 HomeController 中对我来说很好。!
我刚刚在 startup.cs class 中获取了 GetOwinContext。
感恩
你不能那样做。没有请求,OWIN 上下文不存在,Startup class 只为应用程序运行一次,而不是为每个请求运行一次。您的启动 class 应该初始化您的中间件和您的应用程序,中间件和应用程序应该在需要时访问 OWIN 上下文。
如前所述,您所问的是不可能的。但是,根据您的要求,以下内容是可能的,并允许您在创建对象实例的上下文中进行访问。这是我需要的东西,以检查是否已经在其他地方添加了一个实例(我在不同的项目中有多个启动 类)。
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
// Ensure we have our "main" access setup
app.CreatePerOwinContext<DataAccessor>(
(options, owinContext) =>
{
// Check that an instance hasn't already been added to
// the OwinContext in another plugin
return owinContext.Get<DataAccessor>() ?? DataAccessor.CreateInstance(options, owinContext);
}
);
}
在 CreatePerOwinContext
中我们可以访问 OwinContext
,因此我们可以在创建新类型时访问它。这可能不会对每个人都有帮助,因为它更符合个人的需求,但了解它很有用。
我很了解这个问题,但我无法解决这个问题,所以我想在这个网站上创建一个新问题。
HttpContext.Current.GetOwinContext();
我想用上面的代码获取 GetOwinContext 值。以上代码在我的 startup.cs
[assembly: OwinStartupAttribute(typeof(OwinTest.Startup))]
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
var c = HttpContext.Current.GetOwinContext();
}
}
我收到这个错误
//未在上下文中找到 owin.Environment 项目
但是 var c = HttpContext.Current.GetOwinContext();
在 HomeController 中对我来说很好。!
我刚刚在 startup.cs class 中获取了 GetOwinContext。
感恩
你不能那样做。没有请求,OWIN 上下文不存在,Startup class 只为应用程序运行一次,而不是为每个请求运行一次。您的启动 class 应该初始化您的中间件和您的应用程序,中间件和应用程序应该在需要时访问 OWIN 上下文。
如前所述,您所问的是不可能的。但是,根据您的要求,以下内容是可能的,并允许您在创建对象实例的上下文中进行访问。这是我需要的东西,以检查是否已经在其他地方添加了一个实例(我在不同的项目中有多个启动 类)。
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
// Ensure we have our "main" access setup
app.CreatePerOwinContext<DataAccessor>(
(options, owinContext) =>
{
// Check that an instance hasn't already been added to
// the OwinContext in another plugin
return owinContext.Get<DataAccessor>() ?? DataAccessor.CreateInstance(options, owinContext);
}
);
}
在 CreatePerOwinContext
中我们可以访问 OwinContext
,因此我们可以在创建新类型时访问它。这可能不会对每个人都有帮助,因为它更符合个人的需求,但了解它很有用。