У меня есть приложение, которое позволяет пользователю загружать файл (сохраняя его в папке, расположенной в wwwroot приложения ASPNETCORE). Отсюда они могут вносить в него изменения, а затем они могут выбрать экспорт файла в виде файла csv / xml / xlsx, который загружает файл в папку пользователя "downloads".
При отладке в Visual Studio все это работает Однако, хорошо, когда я публикую sh и внедряю приложение в IIS, я получаю исключение
Ошибка сохранения файла C: \ windows \ system32 \ config \ systemprofile \ Downloads (ИМЯ ФАЙЛА)
Не удалось найти часть пути C: \ windows \ system32 \ config \ systemprofile \ Downloads (ИМЯ ФАЙЛА)
Это текущий способ получения папки загрузок :
FileInfo file = new FileInfo(Path.Combine(Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\Downloads"), data.Filename + "." + data.FileType));
Однако я также попробовал решение, на которое Ганс Пассант ответил на аналогичный вопрос здесь . Оба решения работают нормально при локальной отладке, однако, как только я опубликую их sh, это выдает исключение:
Значение не может быть нулевым. Имя параметра: path1
Который, как я полагаю, выдается здесь, когда я пытаюсь сохранить файл в папке загрузки пользователя.
using (var package = new ExcelPackage(file))
{
var workSheet = package.Workbook.Worksheets.Add("ExportSheet");
workSheet.Cells.LoadFromCollection(exports, true);
package.Save();
}
Я не знаю точно как я мог бы воспроизвести эти исключения, видя, как локально, с помощью Visual Studio все это прекрасно работает.
Кто-нибудь еще сталкивался с этой проблемой при попытке загрузить файл?
ОБНОВЛЕНИЕ: Когда приложение работает на IIS, кажется, что оно использует его как профиль пользователя, а не как пользователя, поэтому при попытке перейти в папку «Загрузки» оно не может найти его. Как я могу заставить его использовать профиль пользователя?
LoadUserProfile
уже установлено в True.