#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:
Кай на самом деле был очень близок к ответу! Не было программ, в которых был открыт файл, но каким-то образом при первоначальном создании приложения я создал скрытый файл с тем же именем. Когда я включил скрытые файлы, я увидел это.