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

У меня есть веб-сайт .NET 2.0 (VB), работающий в моем IIS6 (XP Pro SP2), и .NET 3.5 (конечно, настроенный как .NET2 на вкладке IIS ASP.NET), на котором размещен веб-сервис ASMX.

В Chrome я могу вызывать ASMX и успешно вызывать веб-методы. Однако при вызове веб-методов в коде с веб-сайта .NET 2.0 я получаю:

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

Как мне обойти это?


person Matt W    schedule 19.07.2010    source источник


Ответы (5)


Вам необходимо установить учетные данные в вашем приложении при инициализации объекта webService.

Что-то вроде webService.UseDefaultCredentials = true

Это установит учетные данные запроса для текущего пользователя, выполняющего приложение.

person btlog    schedule 19.07.2010
comment
Это для cient, созданного на VB / C # .. что насчет Java, скажем, мне нужно подключиться к этому веб-сервису через мобильное приложение. В этом случае я не могу получить учетные данные по умолчанию. - person rDroid; 28.08.2013
comment
вы сэкономили много времени. Спасибо. - person DelphiLearner; 04.04.2016
comment
О Боже. У нас был код на нашем сайте ASP.Net без этого параметра UseDefaultCredentials в течение многих лет, и он всегда работал нормально. Вчера было применено исправление безопасности Microsoft, и мы каждый раз получали ошибку 401 Unauthorized. Добавление этой одной строчки кода устранило проблему ... очень странно. - person Mike Gledhill; 23.03.2017
comment
Вероятно, это сработает при разработке приложения. Однако будьте осторожны при его развертывании, поскольку на компьютере развертывания может не выполняться аутентификация, и в этом случае вам нужно будет установить их, как указано в Ответ Мохамада Чами. - person Narcís Calvet; 16.11.2017

вы можете использовать это:

webservice.UseDefaultCredentials = true;

если не работает, используйте приведенный ниже код вместо кода выше

webservice.Credentials = new NetworkCredential("userName", "password", "domain");
webservice.PreAuthenticate = true;

примечание: имя пользователя, пароль и домен - это учетные данные пользователя, имеющего доступ к веб-сервису

поэтому убедитесь, что у пользователя есть разрешение на доступ к веб-сервису

возможно, пользователь является пользователем Windows

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

person Mohamad Chami    schedule 27.07.2016
comment
Я тоже столкнулся с той же проблемой - person Prashant Pimpale; 24.01.2019
comment
У меня была такая же проблема, и ваше решение сработало для меня, спасибо! - person lemmy njaria; 24.11.2019

В IIS 7 включите анонимную аутентификацию, и вы сможете отлаживать.

person Glade Mellor    schedule 01.10.2012

webService.UseDefaultCredentials = true

Это сработало для меня.

person SinghJi    schedule 04.06.2013

Я тестирую так:

CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
    UseDefaultCredentials = true };
person ali    schedule 29.06.2014