Это скорее совет по производственной среде, но вы должны практиковать его и на своей машине для разработки.
IIS7.x по умолчанию создаст отдельный пул приложений для вашего сайта, названный в честь имени, которое вы дадите сайту.
Вместо запуска пула приложений и сайта / приложения под NETWORK SERVICE
, запустите и сайт и пул как ApplicationPoolIdentity
.
На панели функций веб-сайта или приложения откройте функцию аутентификации, выберите Анонимная аутентификация и щелкните правой кнопкой мыши Редактировать:
Далее убедитесь, что ваш сайт работает в собственном пуле приложений. Субприложения могут извлечь выгоду из их собственного пула приложений, но мы склонны размещать их в том же пуле, что и родительский сайт, если нет необходимости в другой конфигурации времени выполнения, такой как другая версия ASP.NET или режим конвейера.
Когда вы настроили это, предоставьте необходимые разрешения для удостоверения пула в ваших веб-папках, выполнив:
ICACLS c:\dynamic\NerdDinner\NerdDinner /grant "IIS AppPool\site1":(CI)(OI)(M)
Или вы можете применить эти разрешения через проводник:
Нажмите Check Names
, затем OK
:
В SQL Server применяется то же самое, вместо предоставления разрешений на вашу базу данных для NETWORK SERVICE, вместо этого предоставьте разрешения для ApplicationPoolIdentity
. Как и в случае NETWORK SERVICE
, это будет работать только в том случае, если база данных SQL находится на том же компьютере, что и веб-сервер, если вы используете автономный сервер.
Например:
В диалоговом окне, показанном выше, не выполняйте поиск и Check Names
, поскольку это заменит часть IIS AppPool\
имени пользователя именем вашего компьютера. Когда вы нажимаете OK, SQL будет жаловаться, что не может найти [MACHINENAME]\NerdDinner
.
Затем установите добавление в качестве логина для базы данных NerdDinner:
Я устанавливаю здесь владельца БД, но вы можете выбрать ту роль, которая вам подходит для ваших нужд. Если это ваш компьютер для разработки, то с DBO все будет в порядке, потому что вы сможете создавать DDL из Visual Studio. Большинство рабочих сред с общими хостами в любом случае осуществляют первый вход в систему (обычно это все, что вы получаете), потому что многим приложениям, таким как DotNetNuke и т. Д., Требуется полный контроль над своими базами данных.
Строка подключения, указанная в вашем примере, должна работать без изменений.
Для получения дополнительной информации по этой теме:
Удостоверения пула приложений (IIS.NET)
Новое в IIS 7 - Изоляция пула приложений (Кен Шефер)