Как настроить 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) и вот что я пробовал, ни один из которых не решил проблему:
-
Настройка нового входа с помощью проверки подлинности SQL Server. Я создал новый логин в SQL и дал правильные права доступа к моей БД. Я использовал следующую строку подключения в web config:
источник данных=myServer; начальный каталог=myDB; пользователь Id=myUsername; Password=myPassword;
-
создать новый логин как
IIS APPPOOLDefaultAppPool
. Я создал новый логин в SQL с правильными правами доступа и использовал проверку подлинности windows. Строка подключения следующим образом:сервер=сервер;базы данных=базы данных mydatabase;параметр trusted_connection=истина;
-
использовать существующий сетевой вход
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.
Итак, шаги быть:
- создать свой
myUsername
пользователь SQL Server. - в диалоговом окне свойств пользователя перейдите к и убедится - это.
- Далее переходим к
User mapping
раздел (в левой части). Найдите свою базу данных в списке и проверьте ее. Внизу, вDatabase role membership
список, убедитесь, что вы проверитьpublic
,db_datareader
иdb_datawriter
. -
теперь дайте свои права пользователя для выполнения хранимых процедур. As
sa
, в Management Studio, выполнить:GRANT EXECUTE to myUserName;
ты молодец.
что касается безопасности, вы можете позже уточнить права myUserName
чтобы не иметь возможности, например, удалять таблицы или другие объекты.
в вашем приложении, вы должны использовать строку подключения в пункте 1.
если у вас есть какие-либо другие проблемы, то, пожалуйста, напишите сообщение об ошибке.