Ошибка удаления файла из статического метода: доступ к пути запрещен

Мой хост клянется, что учетная запись ASPNet имеет полный доступ к папке, в которой находятся некоторые фотографии. Я пытаюсь удалить фотографию, вот С#:

public static bool Delete(string pathAndFilename)
{
    var path = HttpContext.Current.Server.MapPath(pathAndFilename);
    File.Delete(path);
}

(в полном коде есть try catch и возвращаемые значения bool)

Обновление: это происходит и в локальной среде разработки. Вот что я смог попробовать.

Я помещаю текущего пользователя в ViewBag и показываю его на странице.

ViewBag.Account = HttpContext.User.Identity.Name;

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

Я проверил открытые файлы, фотография, которую я пытаюсь удалить, не была открыта.

Постараюсь зафиксировать более подробные исключения. Спасибо за идеи!


person Chaddeus    schedule 01.10.2011    source источник
comment
будьте уверены, это не имеет ничего общего со статическим методом   -  person BrokenGlass    schedule 01.10.2011
comment
Спасибо... Я могу это исключить. Понятно, что.   -  person Chaddeus    schedule 01.10.2011
comment
Отказ в доступе также означает, что файл используется другим процессом. Одна и та же ошибка для двух вещей, убедитесь, что вы используете Stream, которые обращаются к файлу.   -  person Jonathan Dickinson    schedule 01.10.2011
comment
Как насчет использования UnauthorizedAccessException ?   -  person    schedule 02.10.2011


Ответы (2)


МССР? Это должна быть СЕТЕВАЯ СЛУЖБА или учетная запись ASPNET (в зависимости от версии IIS).

edit: также нет причин предоставлять IUSR полный доступ. Ему нужен только доступ для чтения.

person Ilia G    schedule 01.10.2011
comment
Только права чтения для удаления файла? - person Henk Holterman; 01.10.2011
comment
Читайте только для пользователя IIS, который НЕ является пользователем, под которым работает его приложение. - person Ilia G; 01.10.2011
comment
Да, извините... Я имел в виду пользователя ASPNet, проклятая дислексия! - person Chaddeus; 02.10.2011
comment
Проверка того, что находится в HttpContext.Current.User.Identity.Name. Я очень подозреваю, что это СЕТЕВАЯ СЛУЖБА, а не ASPNET. - person Ilia G; 02.10.2011

Если вы используете полный путь ("C:\foo") или если строка не распознается как путь, будет выдано исключение HttpException.

Было бы полезно, если бы вы точно описали то, что видите.

person David Pope    schedule 02.10.2011