Ошибка доступа к SQL Server из веб-службы ASMX - PullRequest
0 голосов
/ 22 октября 2009

Я получаю доступ к своему серверу через подключение к удаленному рабочему столу и настроил веб-службу в IIS. Я могу видеть методы, но когда я нажимаю на кнопку «Вызвать», я получаю следующую ошибку:

System.Data.SqlClient.SqlException: сбой входа для пользователя 'SOLDev \ Server02 $'. на ShareWare.Web.Service.WebAPI.Reservation.GetInfo ()

Почему он принимает имя машины за пользователя? Мой пользователь аутентификации Windows - User1Dev. Кроме того, моя защита каталогов в IIS настроена следующим образом:

  1. Опция «Включить анонимный доступ» - отключена
  2. Параметр «Встроенная проверка подлинности Windows» - отключен

Я использую .NET Framework 2.0

Ответы [ 2 ]

1 голос
/ 22 октября 2009

Ваш веб-сервис подключается к SQL с использованием проверки подлинности Windows в качестве принципала, выполняющего службу. В этом случае это, кажется, BUILTIN \ System или BUILTIN \ Network Service, оба из которых аутентифицируются в домене как учетная запись компьютера, т.е. 'SOLDEV \ Server02 $', который соответствует компьютеру с именем Server02 в домене SOLDEV.

Если вы хотите проходить аутентификацию на SQL Server под своим собственным именем входа, то IIS должен передавать информацию аутентификации в процессе, называемом ограниченным делегированием. См. Настройка ограниченного делегирования для Kerberos (IIS 6.0). или Как использовать переход по протоколу и ограниченное делегирование в ASP.NET 2.0 .

Если вы хотите, чтобы веб-служба проходила аутентификацию на SQL Server как сама по себе, вы должны предоставить разрешение на вход субъекту веб-службы на SQL: CREATE LOGIN [SOLDEV\Server02$] FROM WINDOWS.

0 голосов
/ 22 октября 2009

Это потому, что веб-служба работает как идентификатор сетевой службы, а не как вошедший в систему пользователь. Возможно, вам также понадобится <identity impersonate="true" /> в вашей веб-конфигурации, если вы планируете использовать учетные данные пользователя для подключения к SQL Server.

...