我正在创建一个ASP.NET Identity 2.1 WebAPI服务。它允许注册,登录和授权authtokens。我在this tutorial之后创建的Owin启动类是以下代码:
public class OwinStartup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration httpConfig = new HttpConfiguration();
ConfigureOAuthTokenGeneration(app);
ConfigureWebApi(httpConfig);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(httpConfig);
}
private void ConfigureOAuthTokenGeneration(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(AppDbContext.Create);
app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create);
// Plugin the OAuth bearer JSON Web Token tokens generation and Consumption will be here
}
private void ConfigureWebApi(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
}
现在,在ConfigureOAuthTokenGeneration方法中,创建了DbContext和UserManager。我的问题:如何在WepAPI项目的不同类中访问此dbContext和UserManager?
答案 0 :(得分:1)
AppDbContext context = HttpContext.Current.GetOwinContext().Get<AppDbContext>();
AppUserManager userManager = HttpContext.Current.GetOwinContext().Get<AppUserManager();
AccountController(在示例项目中)检索这些值的方式相同。