Разрешения ApplicationPoolIdentity для временных файлов Asp.Net - PullRequest
0 голосов
/ 08 июня 2010

на работе Я немного борюсь со следующей ситуацией: У нас есть веб-приложение, которое работает на 64-битной машине WIndows Server 2008. ApplicationPool приложения работает под ApplicationPoolIdentity и настроено для .net 2 и классического конвейерного режима.

Это прекрасно работает до того момента, когда XmlSerialization требует создания сборок Serializer, где MEF используется для создания коллекции типов знаний.

Чтобы исправить это, я надеялся, что предоставления прав ApplicationPoolIdentity каталогу временных файлов ASP.Net будет достаточно, но, увы ...

Я выполнил следующую команду из командной строки:

icacls "c:\windows\microsoft.net\framework64\v2.0.50727\Temporary ASP.NET Files" /grant "IIS AppPool\MyAppPool":(M)

Очевидно, это не сработало, иначе вы бы не читали это:)

Странно то, что всякий раз, когда я предоставляю пользователям или, более конкретно, группе аутентифицированных пользователей эти разрешения, это работает. Также странно (на мой взгляд) то, что до того, как я начал предоставлять доступ, ApplicationPoolIdentity уже был членом IIS_IUSRS, у которого есть права на изменение каталога временных файлов asp.

А теперь мне интересно, почему в этой ситуации требуются права на изменение для группы «Прошедшие проверку». Я подумал, что это может быть из-за того, что в учетной записи apppool отсутствовали дополнительные права (поиск в Google дал некоторые результаты, поэтому я попробовал их), но предоставление прав на изменение ApplicationPoolIdentity для каталога Windows \ Temp и / или самого каталога приложения не помогло исправить это. .

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

Спасибо заранее!

Ответы [ 2 ]

5 голосов
/ 15 июня 2010

Если пул приложений работает как AppPool Identity, то все должно работать «из коробки», поскольку рабочему процессу будет введен SID IIS_IUSRS, который будет иметь права на запись.

Я предполагаю, что приложение должно использовать проверку подлинности Windows, и в ASP.NET включена олицетворение, так что код, вероятно, запускается от имени конкретного пользователя, который делает запрос, а не от имени процесса.

Правильно ли я полагаю, что приложение работает под аутентификацией Windows? и олицетворение включено в asp.net?

0 голосов
/ 29 июня 2010

Может не относиться к вам, но если вы запускаете пул приложений как пользователь domain , правила меняются при автоматическом внедрении токена IIS_IUSRS в процесс при запуске. Это было недавно замечено при переходе на .net 4, когда у нас не было разрешения на новый каталог временных файлов ASP.net.

См. Здесь для обхода: http://www.yusufozturk.info/iis7/asp-net-write-access-error-on-iis7-5.html

...