У меня есть новое приложение, которое реализует архитектуру лука, теперь я хочу внедрить службу в класс запуска owin. Процесс ioc запускается до того, как он запустит класс запуска, который будет запущен в проекте bootstrapper, который запускается сначала с помощью webactivator. Можно ли внедрить услугу в класс запуска?Inject Service in Startup Owin
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, если хотите. –
thnx для вашего комментария, но если я передаю сервис и/или провайдер в configureOAuth, я должен сначала передать его в методе конфигурации, потому что это вызывающий. Проблема в том, что я не могу выполнить настройку (IAppbuilder, service) beacause it throw исключение (Startup не имеет ожидаемой подписи «void Configuration (IAppBuilder)» ..) – moyomeh
да, вы правы. Я покажу вам, как я это делаю. –