HTTP-запрос неавторизован при «базовой» схеме аутентификации клиента для клиента NAV SOAP в обновлении Dot Net core 3.1

#.net-core #soap-client #asp.net-core-3.1 #asp.net-core-2.2 #dynamics-nav

#.net-core #soap-клиент #asp.net-core-3.1 #asp.net-core-2.2 #dynamics-nav

Вопрос:

У меня есть приложение dot net core 2.2, которое использует конечную точку NAV SOAP, которая отлично работает в среде IIS. Я обновился до dot net core 3.1, где конечная точка SOAP не работает, выдавая ошибку «HTTP-запрос неавторизован с помощью схемы аутентификации клиента «Basic». Заголовок аутентификации, полученный с сервера, был «Согласован «. «

Во время отладки я узнаю, что канал, внутренний канал и состояние не инициализируются должным образом в dot net 3.1, как правило, состояние должно быть открытым, но оно показывает ошибку.

Исключение — system.servicemodel.communicationobjectfaultedexception.

Пожалуйста, найдите ниже снимок для получения дополнительной информации. Инициализация прокси-класса sanpshot

Комментарии:

1. Какую аутентификацию вы используете?

2. Это базовая………. результат. Безопасность. Транспорт. clientCredentialType = System. ServiceModel. HttpClientCredentialType.Basic;

3. Я почти уверен, что Nav не поддерживает basic. Это только NTLM или Kerberos. В вашем случае это согласование, что означает Kerberos. Это не должно зависеть от используемой вами версии dotnet.

4. Я пробовал с NTLM….. HTTP-запрос неавторизован с помощью схемы аутентификации клиента «Ntlm». Заголовок аутентификации, полученный от сервера, был «Согласован».

5. Поскольку согласование означает Kerberos. Если вы хотите использовать NTLM, вам необходимо перенастроить экземпляр сервера Nav / BC для использования NTLM. См . learn.microsoft.com/en-us/dynamics365/business-central /… вам нужно Use NTLM Authentication установить флаг на true .

Ответ №1:

Проблема решена.

Эта проблема из-за неправильного обновления до Dot Net core 3.1. и System.ServiceModel должна иметь Version=»4.4.4″