Службы не регистрируются на Eureka Server с использованием Owin, SteelToe/Autofac, работающих как служба Windows
Веб-службы не регистрируются на Eureka Server из консольного приложения OWIN SelfHosted с библиотеками Steeltoe/Autofac, работающими как служба Windows.
//container.StartDiscoveryClient (); регистрируется на сервере Eureka в другом приложении ASP.net, но не в приложении Console, описанном выше.
Службы правильно работают в Postman в качестве клиента, получающего ответы, которые мы ищем.
Startup.cs:
ApplicationConfig.RegisterConfig("разработка");
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.Register(c => new Logger()).As<ILogger>().InstancePerRequest();
builder.RegisterDiscoveryClient(ApplicationConfig.Configuration);
builder.RegisterType<Diw.Persist.DiwData>().As<Diw.Persist.IDiwData>().InstancePerRequest();
builder.RegisterType<EwsService>().InstancePerRequest();
builder.RegisterType<HubData.Persist.HubDataData>().InstancePerRequest();
builder.RegisterType<Icm.Persist.IcmData>().InstancePerRequest();
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(config);
app.UseWebApi(config);
Сервисы должны отображаться в экземплярах, зарегистрированных на Eureka Server.
1 ответ
Возможно, в игре больше факторов, чем то, о чем вы уже рассказали, поэтому я пошел дальше и обновил один из примеров Steeltoe, чтобы он также работал с автономной службой OWIN, чтобы вы могли хотя бы увидеть базовый рабочий пример. https://github.com/SteeltoeOSS/Samples/tree/2.x/Discovery/src/AspDotNetAutofac
Самостоятельный хостинг OWIN может быть сложной задачей, для достижения наилучших результатов вы, вероятно, вообще не хотите, чтобы он работал под IIS, поэтому убедитесь, что вы запускаете его как консольное приложение во время разработки (как это делает этот образец Steeltoe)