Примеры Service Fabric, такие как wordcount, веб-приложение прослушивает порт в подпутье следующим образом:
http://localhost:8081/wordcount
Код для этой конфигурации: (См. Файл на GitHub https://github.com/Azure-Samples/service-fabric-dotnet-getting-started/blob/master/Services/WordCount/WordCount.WebService/WordCountWebService.cs < / а>)
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[]
{
new ServiceInstanceListener(initParams => new OwinCommunicationListener("wordcount", new Startup(), initParams))
};
}
С этой конфигурацией мы можем развертывать другие веб-приложения в том же кластере, используя тот же порт (8081).
http://localhost:8081/wordcount
И так далее.
Но шаблон проекта Asp.Net Core отличается, и я не знаю, как добавить подпуть в конфигурации слушателя.
Код ниже - это то, что у нас есть в шаблоне проекта (Program.cs класс WebHostingService):
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[] { new ServiceInstanceListener(_ => this) };
}
Task<string> ICommunicationListener.OpenAsync(CancellationToken cancellationToken)
{
var endpoint = FabricRuntime.GetActivationContext().GetEndpoint(_endpointName);
string serverUrl = $"{endpoint.Protocol}://{FabricRuntime.GetNodeContext().IPAddressOrFQDN}:{endpoint.Port}";
_webHost = new WebHostBuilder().UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls(serverUrl)
.Build();
_webHost.Start();
return Task.FromResult(serverUrl);
}
Семантика немного другая, но все сводится к одному и тому же. Проблема в том, что даже я добавляю подпуть в конце serverUrl, он не работает, и веб-приложения всегда отвечают на корневой http://localhost:8081/
Посмотрите, как я пробовал, в приведенном ниже фрагменте кода:
string serverUrl = $"{endpoint.Protocol}://{FabricRuntime.GetNodeContext().IPAddressOrFQDN}:{endpoint.Port}/app1";
Как добиться того же результата, что и «классическое» веб-приложение, используя ядро asp.net?
Цель состоит в том, чтобы публиковать на лазурном сервере порт 80, чтобы пользователи с большим опытом, например:
Большое тебе спасибо!