Как преобразовать SOAP EndpointAddress в .NET Core? - PullRequest
1 голос
/ 29 марта 2019

При подключении службы SOAP в .NET Core подключенная служба отображается, как и ожидалось, в обозревателе решений

enter image description here

ConnectedService.json содержитопределения, как предполагается.Т.е.

{
  "ProviderId": "Microsoft.VisualStudio.ConnectedService.Wcf",
  ...
  "ExtendedData": {
    "Uri": "https://test.example.net/Service.svc",
    "Namespace": "UserWebService",
    "SelectedAccessLevelForGeneratedClass": "Public",
...
}

Uri из ExtendedData заканчивается в Reference.cs файле

private static System.ServiceModel.EndpointAddress GetEndpointAddress(EndpointConfiguration endpointConfiguration)
{
    if ((endpointConfiguration == EndpointConfiguration.WSHttpBinding_IAnvandareService))
    {
        return new System.ServiceModel.EndpointAddress("https://test.example.net/Service.svc");
    }
    throw new System.InvalidOperationException(string.Format("Could not find endpoint with name \'{0}\'.", endpointConfiguration));
}

Если процесс развертывания выглядит как TEST > STAGING > PRODUCTION, может потребоваться соответствующийконечные точки.Т.е. https://production.example.net/Service.svc.

Мы используем Devure Devops для сборки и Azure Devops / Octopus Deploy для развертываний

1 Ответ

1 голос
/ 29 марта 2019

Решением (как я понял) было изменение адреса конечной точки при регистрации зависимости, т. Е.

var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

services.AddTransient<IAnvandareService, AnvandareServiceClient>((ctx) => new AnvandareServiceClient()
{
    Endpoint =
    {
        Address = new EndpointAddress($"https://{environment}.example.net/Service.svc")
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...