iis-разрешения на экспресс-доступ к файлам

#wcf #iis-express

#wcf #iis-express

Вопрос:

Я запускаю службу wcf, размещенную на iis express 7.5. Внутри службы у меня есть служебная операция, которая должна записать файл в файловую систему, но когда она пытается это сделать, я получаю исключение.

я записываю файл в ту же папку, где размещен проект, используя: string filePath = HttpContext.Current.Сервер.MapPath(«.»);

но я продолжаю получать это исключение:

Исключение DirectoryNotFoundException — «Не удалось найти часть пути C:websites….

Похоже, что у моего iis Express нет разрешения на запись файлов. если да, то как мне предоставить ему разрешение?

Спасибо!

Ответ №1:

  1. IIS Express работает под текущим именем пользователя, вошедшего в систему. Если папка, которую вы пытаетесь записать, имеет какой-то специальный доступ, то предоставьте доступ текущему пользователю.

  2. Файл.Открыть (путь к файлу, режим файла.Создать) создаст только файлы, если каталог не завершается, он выдает исключение ‘DirectoryNotFound’, и это ожидаемо. Итак, перед созданием файла убедитесь, что этот каталог существует. возможно, вы можете использовать Directory.API CreateDirectory («путь к каталогу»)

Комментарии:

1. Спасибо! проблема была решена, когда я сначала создал каталог, и только потом создал файл. Я думал, файл. Open должен был сделать это все вместе, но я действительно ошибался.

Ответ №2:

Вам необходимо предоставить учетной записи СЕТЕВОЙ СЛУЖБЫ разрешения на запись в папку, которую вы пытаетесь записать. Кроме того, метод MapPath принимает относительный URL-адрес в корень виртуального каталога:

 var path = HttpContext.Current.Server.MapPath("~/");
  

Комментарии:

1. Спасибо за быстрый ответ! Я просто упомяну, что файл, который я пытаюсь создать, должен быть создан в папке, которая все еще не существует, поэтому я использую FileStream fs = File. Открыть (путь к файлу, режим файла. Создать); я предоставил все разрешения сетевой службе и добавил их в свою папку c: , но все равно получаю то же исключение: «Не удалось найти часть пути ‘C:websitesmyprojectproject. Webnewfolder21Icon.jpg ‘.»

2. Когда я пытаюсь записать файл, я получаю сообщение об ошибке «отказано в доступе» даже при наличии разрешения сетевой СЛУЖБЫ на запись в папку :/