Ошибка веб-сервиса Dynamic Nav 401 Неавторизованный

При использовании веб-службы динамической навигации я получаю следующую ошибку:

Запрос не выполнен со статусом HTTP 401: не авторизован.

Однако, когда я пробую это в браузере, он работает. Я пробовал следующее, но все еще не работает:

service.UseDefaultCredentials = true;
service.PreAuthenticate = true;

также :

service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");

Я даже пытался использовать клавишу доступа Dynamic Nav, но это тоже не сработало.

Есть новые предложения?


person carlkassar    schedule 15.02.2016    source источник


Ответы (4)


Я знаю, что этой ветке больше 4 лет, но я подумал, что если кто-то в настоящее время ищет эту проблему, он наткнется на этот trhead, как и я.

В настоящее время существует проблема с NTLM и Xamarin (на данный момент проблема существует и в ядре .net на MacOS).

Смотрите ссылки:

iOS: https://github.com/xamarin/xamarin-macios/issues/7770< /а>

Android: https://developercommunity.visualstudio.com/content/problem/756697/last-visual-studio-update-brakes-ntlm-authenticati.html

Решение состоит в том, чтобы использовать «MonoWebRequestHandler». Для комбинированного решения для Android и iOS см. мой последний пост здесь

Надеюсь, этим постом я сэкономлю чье-то время!

person CGuy    schedule 30.04.2020

Несколько вещей могут быть неправильными.

Вы проверили, на какой тип аутентификации настроен уровень обслуживания? Существует ли набор компаний по умолчанию (или вы выбираете компанию в URL-адресе). NTLM включен или выключен; это все возможные причины, по которым эта ошибка может появиться.

person Rknabben    schedule 16.02.2016
comment
Вопрос: есть ли разница (в клиентском коде) между клиентом, использующим веб-службу через http, и клиентом, использующим веб-службу через https? - person carlkassar; 19.02.2016
comment
Насколько я знаю, нет, кроме https:// в спецификации сервера. Вы проверили, установлена ​​ли у вас компания по умолчанию? Мы когда-то сходили с ума, ища ошибку 401, и выяснили, что это именно это поле. (и будьте осторожны, некоторые документы по этому вопросу неверны. (Неправильное имя ключа). Если вы используете администрирование Microsoft Dynamics NAV, все должно быть в порядке. Кстати: при использовании учетных данных по умолчанию; какие учетные данные фактически передаются? имеют ли эти учетные данные доступ? ? (если вы, например, создаете веб-приложение, не используется ли сервисная учетная запись веб-сервера?) - person Rknabben; 20.02.2016

Я думаю, что ваш код должен быть таким

service.UseDefaultCredentials = false;
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");

Вы должны включить аутентификацию свойств настройки NTLM, если вы используете PHP или Java или XAMARIN. Используйте аутентификацию NTLM.

person ali bencharda    schedule 28.01.2019

Этот фрагмент кода ниже работает для меня (на самом деле я не настраивал уровень обслуживания - он имеет более или менее настройки по умолчанию):

service.ClientCredentials.Windows.ClientCredential.Domain = <domain>;
service.ClientCredentials.Windows.ClientCredential.UserName = <username>;
service.ClientCredentials.Windows.ClientCredential.Password = <password>;
service.ClientCredentials.Windows.AllowedImpersonationLevel = 
  System.Security.Principal.TokenImpersonationLevel.Delegation;

Если это не работает, попробуйте удалить домен из NetworkCredential — просто используйте свое имя пользователя и пароль (если клиент и сервер находятся в одном домене, очевидно).

person kubanek    schedule 12.11.2019