401 Несанкционированный при обращении к веб-службе ASP.NET из веб-приложения ASP.NET - PullRequest
2 голосов
/ 14 апреля 2009

У меня один сервер (Windows 2003 / IIS 6). Этот сервер имеет несколько разных настроек «Веб-сайтов» в IIS. Каждый сайт настроен в IIS с отдельным заголовком узла (порт 80). Кроме того, каждый сайт также доступен через указанный номер порта (без заголовка узла).

Например:

moj-sait1: http://apps.mysite1.com или же http://myserver:xxxx

MySite2: http://something.mysite2.com или же http://myserver:yyyy

Я отредактировал свой файл hosts (это машина для разработки), чтобы перенаправить заголовок узла каждого сайта на локальную машину (127.0.0.1).

У меня есть веб-сайт ASP.NET 2.0 на одном сайте IIS (mysite1) и веб-служба ASP.NET 2.0 на другом сайте IIS (mysite2). Веб-сайт взаимодействует с веб-сервисом, используя код, подобный следующему:

MyWebService svc = new MyWebService();
//also have tried "http://myserver:yyyy/MyWebService.asmx" below
svc.Url = "http://something.mysite2.com/MyWebService.asmx"; 
svc.Credentials = System.Net.CredentialCache.DefaultCredentials;
svc.MyMethod();

Все сайты настроены для встроенной безопасности Windows, а ASP.NET настроен для проверки подлинности Windows с помощью . Модель безопасности диктует, что пользователь, вошедший в веб-приложение, должен проходить аутентификацию на всем пути к веб-службе (и впоследствии к базовой (ым) базе (ам), но это не обязательно здесь).

У меня это нормально работало, однако я перестроил свою веб-службу (новый метод), и теперь все не работает с результатом любого вызова веб-службы, заканчивающегося 401 несанкционированным сообщением.

Звучит как проблема двойного прыжка. Я полагаю, что это как-то связано с тем, что веб-сервис не принимает передаваемые учетные данные и требует новых. Просто не уверен, как это подтвердить. Не уверен, почему это может вызвать проблемы - я вошел в систему как администратор компьютера / домена, и IE настроен для передачи учетных данных в Свойства обозревателя> вкладка Безопасность> Пользовательский уровень> Автоматический вход в зону интрасети. Да, соответствующие сайты добавляются в мою "зону интранета".

Как лучше всего это устранить? Любые идеи о том, что может быть причиной этого сейчас?

ТИА!

1 Ответ

1 голос
/ 14 апреля 2009

Это звучит как проблема двойного прыжка . Чтобы подтвердить, является ли проблема двойного прыжка, я бы изменил строку, которая гласит svc.Credentials = и явно ввел учетные данные для проверки, и посмотреть, работает ли она. Если это сработает, тогда это проблема двойного прыжка, и вам нужно будет ее решить.

...