Подтвердить что ты не робот

Исключение при развертывании в IIS: сбой входа в систему для пользователя "IIS APPPOOL\DefaultAppPool"

Я работаю над некоторыми примерами WCF в "Windows Communication Foundation 4 Step by Step". Мое результирующее приложение работает нормально, пока служба размещается в казино. Он не работает, когда я развертываю службу в локальном IIS. При развертывании в IIS я могу перейти на страницу svc в IE. Это работает.

Согласно книге, страница 41, учетная запись пула приложений должна быть членом роли db_owner в моей базе данных. Автор предлагает после проверки правильного адреса службы (уже сделал это) проверку прав учетной записи пула приложений.

Как проверить, какая учетная запись используется пулом приложений, на котором размещена моя служба WCF? В настоящее время использование пула приложений по умолчанию и IIS APPPOOL\DefaultAppPool находится в роли db_owner. IIS APPPOOL\ASP.NET v4.0 также находится в роли db_owner.

Исключение составляет...

System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'.

Как устранить эту проблему? Спасибо!

4b9b3361

Ответ 1

Решение найдено здесь:

  • Открыть IIS
  • дважды щелкните имя своего ПК в разделе Подключения
  • Нажмите "Пулы приложений"
  • Выберите пул приложений (DefaultAppPool)
  • Затем под действием правой кнопкой мыши нажмите "Дополнительные настройки",
    • Перейдите в раздел "Модель процесса" и
    • нажмите "Идентификация".
    • Теперь выберите NetworkService.

Ответ 2

У меня была та же проблема. Проблема заключалась в том, что у меня была "IntegratedSecurity = True"; в моей строке подключения, но я использовал аутентификацию sql и одновременно передавал учетные данные. Я удалил элемент IntegratedSecurity, и все сработало.

Ответ 3

if not exists 
(select * from sys.server_principals where name='IIS APPPOOL\DefaultAppPool') 
    create login [IIS APPPOOL\DefaultAppPool] from windows;

Ответ 4

Прежде всего вам нужно очистить, если вы используете проверку подлинности Windows, и вы не укажете ни одного имени пользователя в строке подключения, а затем:

Что происходит, когда вы запускаете свой код через localhost: когда вы запускаете свой тестовый клиент wcf из localhost, он сможет связываться с базой данных, поскольку приложение локального режима отладки вызывается базой данных вашей учетной записью. Таким образом, он имеет доступ к базе данных, потому что devenv.exe работает под вашей учетной записью пользователя.

Но когда вы развертываете свой веб-сервис в IIS. Теперь понимайте, что эта служба работает под IIS не под вашей учетной записью. Поэтому вам необходимо назначить права доступа службе IIS для доступа к серверу sql для проверки подлинности Windows. Здесь ваш веб-сервис не сможет связаться с сервером SQL из-за проблемы с правами доступа.

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

Ниже приведены шаги для проверки подлинности Windows WCF: • Откройте IIS (Windows + R (запуск), затем введите inetmgr, затем нажмите ok) • дважды щелкните имя своего ПК в разделе "Подключения" • Нажмите "Пулы приложений" • Выберите свой пул приложений (DefaultAppPool) • Затем под действием правой кнопкой мыши нажмите "Дополнительные настройки": • Перейдите в раздел "Модель процесса" и • нажмите "Идентификация". • Теперь выберите LocalSystem.

Теперь откройте студию управления сервером sql: open run- > then type ssms затем нажмите ok в ssms, войдите с помощью учетной записи проверки подлинности Windows. открыть вкладку безопасности развернуть вкладку "Вход" то вы сможете просмотреть свою учетную запись.

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

добавить Trusted_Connection = True; свойство в вашей строке соединения. Сохраните его и разверните веб-службу. Перезапустите пул приложений.

теперь вы сможете подключить базу данных.