Невозможно использовать WCF WSHttpBinding в ядре .net - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь переместить свой проект из .net в ядро ​​.net. Первоначально я использовал службу WCF WSHttpBinding в .net, но я не могу использовать то же самое в ядре .net. Я пытался использовать BasicHttpBinding для соединения с WsHttpBinding на стороне клиента, но выдает ошибку, говорящую, что привязки должны совпадать как на стороне клиента, так и на стороне сервера.

Предложите, как реализовать WSHttpBinding на .Net Core без изменений WSHttpBindings на стороне клиента.

Ответы [ 4 ]

0 голосов
/ 26 июня 2019

Я смог заставить его работать, используя пользовательскую привязку. Есть также https, текстовые и двоичные элементы привязки, которые можно настроить.

var binding = new CustomBinding
{
    Elements = { new HttpTransportBindingElement
    {
        MaxBufferSize = int.MaxValue,
        MaxReceivedMessageSize = int.MaxValue
    }}
};
0 голосов
/ 02 марта 2019

Я использовал WSHttpBinding на полной основе. После перехода на .net core 2.2 я столкнулся с той же проблемой.

Позже я обнаружил, что BasicHttpsBinding (это https, а не http) идеально подходит для моих нужд. Я просто заменил WSHttpBinding на BasicHttpsBinding, и все работает нормально (в Windows и Linux).

0 голосов
/ 31 мая 2019

Это более полный ответ, и он может помочь кому-то, кто пытается вызвать конечную точку службы SOAP с помощью .NET Core (.NET Core 2.2) и изо всех сил пытается заставить ее работать.

Для ответа я предполагаю, что вы уже добавили подключенную службу. Если нет, пожалуйста, обратитесь к этой статье Microsoft

В приведенном ниже примере используется BasicHttpBinding с Ntlm типом учетных данных (ДОМЕН \ Имя пользователя):

public async Task<string> AddNAVSalesOrder(string jsonString)
{
    var binding = new BasicHttpsBinding();
    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;

    var endpoint = new EndpointAddress(_appConfig["NAVEndpoint"]);

    var client = new eCommIntegrationMgt_PortClient(binding, endpoint);

    client.ClientCredentials.UserName.UserName = _appConfig["NAVUsername"];
    client.ClientCredentials.UserName.Password = _appConfig["NAVPassword"];

    try
    {
        var result = await client.ImportSalesOrderAsync(jsonString);

        return result.return_value;
    }
    catch (Exception)
    {
        throw;
    }
}

_appConfig - это глобальная переменная, которая доступна через DI (Dependency Injection). Вы можете заменить их жестко закодированными значениями, если вы не используете DI. catch здесь избыточен, но вы можете добавить свою собственную обработку ошибок / ведение журнала.

eCommIntegrationMgt_PortClient - это клиент, то есть объект службы, где существуют все наши конечные точки.

0 голосов
/ 05 сентября 2018

WCF WSHttpBinding пока не поддерживается в ядре .net 2.1. Вот список поддерживаемых привязок в .Net core

  • BasicHttpBinding
  • CustomBinding
  • NetHttpBinding
  • NetTcpBinding

Подробнее о поддерживаемых функциях нажмите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...