Ошибка отказа в доступе при записи текстового файла в папку ftproot в зависимости от типа файла

#c# #asp.net #iis #file-permissions

Вопрос:

У меня есть c# .Сетевая веб — страница, которая записывает файл .csv в папку inetpubftproot на сервере Windows 2019.

 string fileName = @"d:inetpubftprootcompetencies.csv";
using (System.IO.TextWriter w = new StreamWriter(fileName, false, Encoding.ASCII))
 

Когда я пытаюсь создать файл, я получаю сообщение об ошибке «отказано в доступе».

 System.UnauthorizedAccessException
HResult=0x80070005
Message=Access to the path 'd:inetpubftprootcompetencies.csv' is denied.
 

Я изменил права доступа к файлам на «Все» с «Полным контролем» над папками и подпапками, чтобы узнать, были ли проблемы с разрешениями, та же ошибка. Я изменил подключение в основных настройках IIS, чтобы использовать администратора, чтобы посмотреть, исправит ли это проблему. Этого не произошло. Я проверил, чтобы убедиться, что файл еще не существовал. Это не.

Наконец, я изменил расширение файла на .txt, а не на .csv, и это сработало! Он написал текстовый файл нормально. Итак, что насчет расширения .csv, которое приведет к ошибке «отказано в доступе»?

ИЗМЕНИТЬ: Procmon показал следующее:

 7:38:46.0371899 AM  w3wp.exe    23216   CreateFile  D:inetpubftprootCompetencies.csv IS DIRECTORY    Desired Access: Generic Write, Read Attributes, Disposition: OverwriteIf, Options: Sequential Access, Synchronous IO Non-Alert, Non-Directory File, Open No Recall, Attributes: n/a, ShareMode: Read, AllocationSize: 0
 

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

1. Используйте монитор процессов , чтобы увидеть, что на самом деле происходит в папке.

2. Я не уверен, на что вы хотите, чтобы я смотрел с помощью монитора процессов.

3. Когда это не удается, вы видите пользователя, которого он использует для доступа к папке, и разрешения. Таким образом, вы можете использовать это, чтобы увидеть, что происходит на самом деле, а не то, что должно произойти.

4. У вас есть файл, открытый в Excel, и вы также пытаетесь его записать??

5. Вывод Procmon добавлен в исходную запись. Caius: Файл не существует, на сервере нет Excel.

Ответ №1:

Кай на самом деле был очень близок к ответу! Не было программ, в которых был открыт файл, но каким-то образом при первоначальном создании приложения я создал скрытый файл с тем же именем. Когда я включил скрытые файлы, я увидел это.