我有一个实现洋葱架构的新应用程序���现在我想在owin的启动类中注入一个服务。因为它位于引导程序项目中,该引导程序项目首先使用webactivator运行,所以ioc过程在命中启动类之前就已经启动了。是否可以在启动类中注入服务?
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
// Web API routes
config.MapHttpAttributeRoutes();
ConfigureOAuth(app);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
// i want to use an injected service inside a provider :my problem :(
var providers = Providers(service);
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
//For Dev enviroment only (on production should be AllowInsecureHttp = false)
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/generateToken"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = providers,
AccessTokenFormat = new CustomJwtFormat("http://localhost:18292/")
};
// OAuth 2.0 Bearer Access Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
}
}
ConfigureOAuth
方法中?这样就会颠倒控制权。您需要一个入口来设置IOC容器,因此最好是在StartUp
中进行设置。顺便说一下,您不必遵循StartUp
约定。如果愿意的话,您可以手动启动owin应用程序。 - Meirion Hughes