У меня есть веб-служба, размещенная на другом сервере, где флажок анонимного доступа в IIS уже установлен. когда мое локальное веб-приложение пытается получить доступ к веб-службе, я все равно получаю сообщение «Запрос не выполнен с HTTP-статусом 401: доступ запрещен». ошибка. мое веб-приложение вызывает Интернет сервис вроде следующего:
MyObject.WebService ws = новый MyObject.WebService (); ws.Retrieve (someParams);
что мне здесь не хватает?





Вы пытаетесь несколько раз выбрать разрешить iis для управления паролем, который выходит из строя.
попробуйте сайт, и он может работать. вы могли бы снова включить контроль после этого
Здесь - хороший справочник по диагностике ошибки 401.
Исходя из этого, можно начать с проверки учетных данных, которые вы настраиваете для анонимного пользователя. Если они неверны (если, возможно, пароль пользователя был изменен в другом месте), вы получите HTTP 401.
Убедитесь, что права доступа к каталогу также разрешают всем доступ для чтения. Много раз, выполняя локальную работу разработчика, я забываю, что каталог, к которому осуществляется доступ, имеет отдельный набор разрешений, которые необходимо изменить.
Ваше здоровье!
Попробуйте следующее (обратите внимание на PreAuthenticate):
MyObject.WebService ws = new MyObject.WebService();
ws.PreAuthenticate = true;
response = ws.Retrieve(someParams);
Для более подробного объяснения, почему это может работать, вы можете сослаться на следующий ответ здесь http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/3ae9753d-2d97-45b9-9ba2-6d551fe60a48/.
Я думаю, что может происходить то, что вы получаете 401 - разрешение отказано, но кому отказано в разрешении, неясно. Я предполагаю, что на этом этапе вы проверили разрешения NTFS на машине и подтвердили, что у вас есть доступ.
Затем я хотел бы посмотреть, какую учетную запись использует пул приложений. Если это настройка по умолчанию, вероятно, это будет учетная запись сетевой службы NT. В этом случае убедитесь, что у учетной записи есть доступ к каталогу приложения. Если это так, возможно, это параметр безопасности COM +. По умолчанию ваша учетная запись сетевой службы не имеет разрешения на удаленный запуск компонентов. В этом случае вы увидите ошибки в журнале системы и безопасности, в котором будет указана ссылка «Невозможно запустить компонент».
Просмотр файлов журнала IIS, а также журналов событий системы и безопасности на сервере iis часто дает больше подсказок.
Надеюсь, это поможет Наилучшие пожелания Рихан Мейдж
Отметьте это http://www.c-sharpcorner.com/UploadFile/mahesh/40107282006095201AM/401.aspx.
//Assigning DefaultCredentials to the Credentials property
//of the Web service client proxy (myProxy).
myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;
Этот код работал у меня.
@Niklas обновил ссылку - скоро добавлю дополнительную информацию из этого сообщения в свой ответ, чтобы обеспечить его безопасность в будущем.