Как настроить SQL Server / IIS 7.0, чтобы разрешить ASP.NET веб-сайт MVC для доступа к базе данных?

Я построил ASP.NET веб-сайт MVC 2, который я размещаю с облачным сервером Rackspace, используя IIS 7.0.

когда я пытаюсь проверить веб-сайт под localhost с IIS 7.0 на сервере, я получаю страницу с ошибкой. Это происходит из журналов SQL (я использую SQL Web Edition):

Error: 18456, Severity: 14, State: 11
Login failed for user 'IIS APPPOOLDefaultAppPool'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: <local machine>]

мой сайт отлично работает на моем домашнем ПК, поэтому проблема связана с подключением к базе данных.

исследовав код сообщения об ошибке, он предполагает, что у меня есть допустимый вход в БД, но доступ к серверу не удался. Я сделал стек чтения вокруг этого на различных форумах (ВКЛ. stackoverflow / serverfault) и вот что я пробовал, ни один из которых не решил проблему:

  1. Настройка нового входа с помощью проверки подлинности SQL Server. Я создал новый логин в SQL и дал правильные права доступа к моей БД. Я использовал следующую строку подключения в web config:

    источник данных=myServer; начальный каталог=myDB; пользователь Id=myUsername; Password=myPassword;

  2. создать новый логин как IIS APPPOOLDefaultAppPool. Я создал новый логин в SQL с правильными правами доступа и использовал проверку подлинности windows. Строка подключения следующим образом:

    сервер=сервер;базы данных=базы данных mydatabase;параметр trusted_connection=истина;

  3. использовать существующий сетевой вход NT AUTHORITYNETWORK SERVICE. Я сопоставил этого пользователя с моей базой данных с правильными правами доступа. Строку подключения в качестве следует:

    сервер=сервер;базы данных=базы данных mydatabase;параметр trusted_connection=истина;

эти кажутся основными вариантами, когда я читаю материал в интернете. Наконец, здесь, как и некоторые другие вещи, которые могут быть полезны:

  • установка SQL в Запуск от имени администратора не решил вопрос
  • выключить UAC не помогло
  • мой пул приложений с помощью ApplicationPoolIdentity (лучше всего по соображениям безопасности)

короче говоря, мой сайт не запускается, потому что он не может получить объект из БД, поэтому выдает ошибку. Проблема в том, что права доступа к серверу установлены неправильно. Я не могу понять, какая конфигурация SQL login / connection string / domain access rights мне нужна.

это раздражало меня в течение 3 недель-можете ли вы сэкономить 5 минут, чтобы помочь мне, пожалуйста?

1 ответов


поскольку ваши серверы (web и SQL) не являются частью домена, Вы не можете использовать проверку подлинности Windows (Интегрированная безопасность) для подключения к SQL Server.

в IIS, при наличии Integrated Security=SSPI в строке подключения фактическим пользователем, используемым для подключения к SQL Server, является идентификатор пула приложений.

вы должны пойти с вашим вариантом 1, Что означает Настройка нового входа с помощью проверки подлинности SQL Server.

Итак, шаги быть:

  1. создать свой myUsername пользователь SQL Server.
  2. в диалоговом окне свойств пользователя перейдите к и убедится - это.
  3. Далее переходим к User mapping раздел (в левой части). Найдите свою базу данных в списке и проверьте ее. Внизу, в Database role membership список, убедитесь, что вы проверить public, db_datareader и db_datawriter.
  4. теперь дайте свои права пользователя для выполнения хранимых процедур. As sa, в Management Studio, выполнить:

    GRANT EXECUTE to myUserName;

  5. ты молодец.

что касается безопасности, вы можете позже уточнить права myUserName чтобы не иметь возможности, например, удалять таблицы или другие объекты.

в вашем приложении, вы должны использовать строку подключения в пункте 1.

если у вас есть какие-либо другие проблемы, то, пожалуйста, напишите сообщение об ошибке.