【发布时间】:2020-07-30 20:08:45
【问题描述】:
我有一个允许用户上传文件的应用程序(将其保存到位于 ASPNETCORE 应用程序的 wwwroot 的文件夹中)。从这里他们可以对其进行编辑,然后他们可以选择将文件导出为 csv/xml/xlsx,从而将文件下载到用户的“下载”文件夹。
在 Visual Studio 中调试时,一切正常,但是当我将应用程序发布并部署到 IIS 时,出现异常
保存文件 C:\windows\system32\config\systemprofile\Downloads(FILE NAME) 时出错
找不到部分路径 C:\windows\system32\config\systemprofile\Downloads(FILE NAME)
这是我获取下载文件夹的当前方式:
FileInfo file = new FileInfo(Path.Combine(Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\Downloads"), data.Filename + "." + data.FileType));
但是,我也尝试了 Hans Passant 回答类似问题here 的解决方案。这两种解决方案在本地调试时都可以正常工作,但是一旦我发布它们,这个就会产生异常:
值不能为空。参数名称: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。
【问题讨论】:
-
可能是权限有问题?
-
@Mateech 我不这么认为。下载文件夹几乎对所有人都具有读写权限
-
先了解差异blog.lextudio.com/…
-
您需要堆栈跟踪来找到异常的确切行。您还可以通过确认每个变量的输出并将其写入日志文件来进行一些详细的调试。
标签: c# asp.net-core iis asp.net-core-mvc