Загрузка файла выдает UnauthorizedAccessException net core 2 - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь скачать файл.(Он работал раньше), но теперь он начал давать сбой.

Это веб-проект .net core 2, поддерживаемый проектом web api net core 2.Выдает следующее сообщение об ошибке.

Ошибка.Произошла ошибка при обработке вашего запроса.Идентификатор запроса: 0HLDPTBLNENOG: 0000000A

Переключение режима разработки в среду разработки будет отображать более подробную информацию о возникшей ошибке.

Среду разработки не следует включать в развернутых приложениях, поскольку это может привести кконфиденциальная информация из исключений, отображаемых для конечных пользователей.Для локальной отладки среду разработки можно включить, задав для переменной среды ASPNETCORE_ENVIRONMENT значение Development и перезапустив приложение.

Во-первых, я не знаю, как включить режим разработки, я даже пытался изменитьпеременная окружения с помощью этой команды

setx ASPNETCORE_ENVIRONMENT "development"

, но не работает.

В любом случае, я сначала попытался зарегистрировать процесс.У меня есть один метод в webapi, который находит файл de в репозитории и возвращает местоположение файла в веб-контроллер.Согласно моему журналу, это не выдает исключение, и все идет как запланировано.

В веб-контроллере все работает гладко до этой точки

return File(new FileStream(location, FileMode.Open), "application/x-msdownload", filename.doc);

, где он выдает следующее исключение(это строка 94, указанная в сообщении об исключении).

:System.UnauthorizedAccessException: Access to the path 'I:\Repository\Filename.doc' is denied.
at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at AbAWeb.Controllers.DocumentController.Download(String docId) in C:\SOME FOLDERS\Controllers\DocumentController.cs:line 94

Поэтому я предполагаю, что это как-то связано с разрешениями.

Я добавил IUSR, IIS_IUSRS, NETWORK SERVICE и Iдаже пытался все, и это все еще вызывает то же исключение.

В некоторых сообщениях говорится, что я должен добавить пользователей IIS Apppool, но я не смог найти их в диалоговом окне проверки имен.

Файлы находятся на жестком диске I: веб-сайты находятся на C:.

Спасибо

1 Ответ

0 голосов
/ 15 мая 2018

В соответствии с https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities, вы должны запустить в cmd следующее:

ICACLS <Folder Name> /grant "IIS AppPool\DefaultAppPool:F" /t
...