ASP.NET — чтение и запись в файловую систему вне приложения

Есть ли способ получить доступ к файловой системе за пределами текущего приложения ASP.NET, не предоставляя разрешения IIS_IUSRS? Например, если бы я хотел, чтобы эта строка работала:

logStream = File.Open("C:\logs\app.log", FileMode.Append, FileAccess.Write, FileShare.ReadWrite);

... Обычно мне приходилось предоставлять разрешение на чтение/запись C:\logs\app.log группе IIS_IUSRS. Это раздражает при настройке приложения в новых системах, где каталоги, к которым необходимо получить доступ, могут находиться в разных местах. Есть ли способ сообщить ASP.NET, к каким каталогам он должен иметь доступ?


person Jimmy Schementi    schedule 25.09.2009    source источник


Ответы (2)


Вы можете сделать это, используя олицетворение, но я настоятельно рекомендую вам не делать этого. Вы попадаете в очень опасные области с точки зрения безопасности. Если вы не уверены на 100% в правах доступа личности, которую вы выдаете за себя, то вы рискуете позволить хакерам получить доступ к областям вашего сервера, которые вы не планировали. Правильная настройка ACL требует времени, и вы НЕ хотите просто использовать администратора или суперпользователя. Вы хотели бы настроить пользователя специально для этой цели, и если вы делаете это, вы просто добавляете шаг к тому, что уже делаете.

Лучшим решением было бы спроектировать ваше приложение для записи в папку, которой управляет ваше приложение. Ваша установка может создать папку на компьютере и предоставить разрешения автоматически, а не полагаться на существующую системную папку.

http://msdn.microsoft.com/en-us/library/ms998258.aspx#pagguidelines0001_impersonationdelegation

person David    schedule 25.09.2009

Вы также можете настроить свой AppPool для запуска под учетной записью с соответствующими учетными данными.

person rick schott    schedule 26.09.2009