Это более полный ответ, и он может помочь кому-то, кто пытается вызвать конечную точку службы 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
- это клиент, то есть объект службы, где существуют все наши конечные точки.