#wcf #iis-express
#wcf #iis-express
Вопрос:
Я запускаю службу wcf, размещенную на iis express 7.5. Внутри службы у меня есть служебная операция, которая должна записать файл в файловую систему, но когда она пытается это сделать, я получаю исключение.
я записываю файл в ту же папку, где размещен проект, используя: string filePath = HttpContext.Current.Сервер.MapPath(«.»);
но я продолжаю получать это исключение:
Исключение DirectoryNotFoundException — «Не удалось найти часть пути C:websites….
Похоже, что у моего iis Express нет разрешения на запись файлов. если да, то как мне предоставить ему разрешение?
Спасибо!
Ответ №1:
-
IIS Express работает под текущим именем пользователя, вошедшего в систему. Если папка, которую вы пытаетесь записать, имеет какой-то специальный доступ, то предоставьте доступ текущему пользователю.
-
Файл.Открыть (путь к файлу, режим файла.Создать) создаст только файлы, если каталог не завершается, он выдает исключение ‘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. Когда я пытаюсь записать файл, я получаю сообщение об ошибке «отказано в доступе» даже при наличии разрешения сетевой СЛУЖБЫ на запись в папку :/