Ошибка доступа к SQL Server из веб-службы ASMX
-
05-07-2019 - |
Вопрос
Я обращаюсь к своему серверу через подключение к удаленному рабочему столу и настроил веб-службу в IIS. Я могу видеть методы, но когда я нажимаю кнопку & Quot; Invoke & Quot; Я получаю следующую ошибку:
System.Data.SqlClient.SqlException: сбой входа для пользователя 'SOLDev \ Server02 $'. на ShareWare.Web.Service.WebAPI.Reservation.GetInfo ()
Почему он принимает имя компьютера за пользователя? Мой пользователь аутентификации Windows - User1Dev. Кроме того, моя безопасность каталогов в IIS настроена следующим образом:
<Ол>Я использую .NET Framework 2.0
Решение
Это потому, что веб-служба работает как идентификатор сетевой службы, а не как вошедший в систему пользователь. Возможно, вам также потребуется <identity impersonate="true" />
в веб-конфигурации, если вы планируете использовать учетные данные пользователя для подключения к SQL Server.
Другие советы
Ваша веб-служба подключается к SQL-серверу с использованием проверки подлинности Windows в качестве участника, выполняющего службу В этом случае это, кажется, BUILTIN \ System или BUILTIN \ Network Service, оба из которых аутентифицируются в домене как учетная запись компьютера, т.е. 'SOLDEV \ Server02 $', который соответствует компьютеру с именем Server02 в домене SOLDEV.
Если вы хотите проходить аутентификацию на SQL Server под своим собственным именем входа, IIS должен передавать информацию аутентификации в процессе, называемом ограниченным делегированием. См. Configuring. Ограниченное делегирование для Kerberos (IIS 6.0). или Как: использовать Переход по протоколу и ограниченное делегирование в ASP.NET 2.0 .
Если вы хотите, чтобы веб-служба аутентифицировалась на SQL Server как сама по себе, вы должны предоставить разрешение на вход субъекту веб-сервиса на SQL: CREATE LOGIN [SOLDEV\Server02$] FROM WINDOWS
.