2009-09-25 2 views
2

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

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

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

ответ

6

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

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

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

2

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

Смежные вопросы