Исключение, когда ASP.NET пытается удалить сетевой файл

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

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

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

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

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

http://www.leastпривилегия.com/ShowContextsNET20Version.aspx


person Community    schedule 13.02.2009    source источник


Ответы (2)


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

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

person Chris Ballance    schedule 13.02.2009

Похоже, вы работаете не в том контексте.

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

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

Дополнительные сведения об API WNetAddConnection2:

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

person Jim Petkus    schedule 13.02.2009