У нас есть веб-служба .NET 3.5 (не WCF), работающая под IIS. Он должен использовать identity impersonate="true"
и встроенную проверку подлинности Windows для аутентификации стороннего программного обеспечения. Кроме того, он подключается к базе данных SQL Server с использованием аутентификации ADO.NET и SQL Server (с указанием фиксированного идентификатора пользователя и пароля в строке подключения).Интегрированная проверка подлинности Windows в IIS, вызывающая сбой ADO.NET
Все работало отлично, пока база данных не была перенесена из SQL Server A для SQL Server B. (Не было таким же, как веб-сервер). Затем веб-служба будет бросить следующее исключение:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Это ошибка только возникает, если идентификация олицетворяется в Web.config.
Опять же, строка подключения не изменилась и указала пользователя. Я протестировал строку подключения, и она работает как под олицетворенной учетной записью, так и под учетной записью службы (и с удаленной машины, и с сервера).
Что нужно изменить, чтобы заставить это работать с олицетворением?
EDIT:
Ремус Ruşanu указал нам в правильном направлении. Он дошел до Kerberos - SPN не были настроены для нового сервера. См. Также asp.net via kerberos integrated windows authentication to sql server. Спасибо!
Если я добавляю «tcp:», я получаю: «(поставщик: поставщик TCP, ошибка: 0 - соединение не может быть сделано, потому что целевая машина активно отказалась от него.)« Я попробовал это на своей локальной машине, где он будет работать, если Я снимаю «tcp:». – TrueWill
Ваш сервер не настроен на прослушивание по TCP или не прослушивает порт по умолчанию –