Сбой IIS 7.5 при доступе к БД - PullRequest
       14

Сбой IIS 7.5 при доступе к БД

1 голос
/ 18 декабря 2010

У меня странная проблема: У меня есть простой сервис WCF, который получает некоторые данные из БД. Когда я размещаю сервис на локальном сервисе, все работает нормально, но когда я размещаю тот же сервис на локальном IIS (7.5 - windows 7), я получаю следующее исключение: The Undelying provider failed on open.

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

Что я сделал: включил олицетворение ASP.NET на сервере IIS -> не помогло.

Другое дело: я использую SQL Server 2008 Express.

Другие идеи ???

Ответы [ 5 ]

2 голосов
/ 18 декабря 2010

Какой механизм безопасности вы используете?Вероятно, вы используете какую-то аутентификацию Kerberos / Windows, и IIS не может передать эти учетные данные на сервер SQL.Эта проблема иногда упоминается как проблема двойного перехода и обычно решается делегированием (не делегированием ASP.NET).

Ссылка: Делегирование и олицетворение

1 голос
/ 19 декабря 2010

Похоже, что наиболее вероятной причиной будет безопасность.

В IIS 7.5 у вас есть различные уровни безопасности. Каждый AppPool имеет свои собственные учетные данные, которые вы можете проверить.

Кроме того, сама служба Windows IIS имеет учетные данные безопасности. Возможно, вы захотите установить для этой учетной записи сетевую учетную запись, если она настроена на локальную учетную запись.

Но сообщение об ошибке, которое вы опубликовали, является общей ошибкой WCF. Я бы согласился с Джимом о поиске в журнале событий более подробной информации. Если вы найдете это, напишите здесь.

1 голос
/ 19 декабря 2010

Одной из самых простых вещей, которые нужно указать в правильном направлении, является проверка журналов событий Windows, в частности журнала безопасности. Возможно, он говорит вам, что происходит.

Проверьте это как на компьютере IIS, так и на компьютере БД.

1 голос
/ 19 декабря 2010
1 голос
/ 19 декабря 2010

Предполагая, что вы запускаете службу в .NET 4.0, обратите внимание на IIS и пул приложений, обслуживающий рассматриваемое приложение.

Если учетной записью, в которой запущен пул приложений, является ApplicationPoolIdentity, проверьте в вашей базе данных, что логин «IIS AppPool \ DefaultAppPool» имеет права доступа к вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...