Исключение, когда ASP.NET пытается удалить сетевой файл - PullRequest
1 голос
/ 13 февраля 2009

У меня есть приложение ASP.NET, которое пытается удалить файл из общего сетевого ресурса. Рабочий процесс приложения ASP.NET выполняется под учетной записью домена (подтвердил это, посмотрев в TaskManager и используя ShowContexts2.aspx¹).

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

Однако он не может этого сделать, и вместо этого я получаю исключение (изменил путь к файлу на все x):

System.Web.HttpUnhandledException: исключение типа «System.Web.HttpUnhandledException» было сгенерировано. ---> System.UnauthorizedAccessException: доступ к пути '\ xxxxxxx \ xxxxxxx \ xxxxxxx \ xxxxxx.xxx' отклонен.

Есть идеи, как диагностировать / исправить эту проблему?

http://www.leastprivilege.com/ShowContextsNET20Version.aspx

Ответы [ 2 ]

0 голосов
/ 14 февраля 2009

Звучит так, будто вы работаете не в нужном контексте.

Для решения этой проблемы другим способом (который является гораздо более безопасным) следует запустить учетную запись по умолчанию и подключиться к сетевому диску с помощью WNetAddConnection2 Windows API. Используя этот API, вы не изменяете контекст, в котором работает ASP.net, вы просто отображаете подключение диска. Вы можете указать либо учетную запись домена, либо локальную учетную запись. Вы можете настроить отображение буквы диска или просто выполнить аутентификацию на общем диске без сопоставления буквы.

Я использовал этот API из asp.net более одного раза, и он прекрасно работает. Поскольку вы не предоставляете ASP.net повышенные привилегии, это намного более безопасно.

Дополнительная информация об API WNetAddConnection2:

http://msdn.microsoft.com/en-us/library/aa385413(VS.85).aspx

0 голосов
/ 13 февраля 2009

Убедитесь, что ваш рабочий процесс ASP.NET имеет доступ к указанному пути к файлу.

Вы можете попытаться предоставить «полный контроль» доступа «каждому», а затем восстановить доступ обратно, пока он не будет работать с нужными вам разрешениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...