本地Visual Studio 2019以管理员身份运行一个Asp.Net MVC的解决方案,在业务层使用MiniExcel解析用户上传的excel,没有碰到问题,代码给到同事发布测试,先在他本地运行,发现报下图的错误,
调试代码发现MiniExcel缓存文件的路径默认会写到iis的安装目录下,该目录对于iis没有读写权限,于是下载了MiniExcel的源码,找到代码的具体位置在类SharedStringsDiskCache中,设置缓存文件的路径,
public SharedStringsDiskCache()
{
var path = $"{Guid.NewGuid().ToString()}_miniexcelcache";
var basePath = System.AppDomain.CurrentDomain.BaseDirectory+ "\\excel_cache";
if(!Directory.Exists(basePath))
{
Directory.CreateDirectory(basePath);
}
_positionFs = new FileStream($"{basePath}\\{path}_position", FileMode.OpenOrCreate);
_lengthFs = new FileStream($"{basePath}\\{path}_length", FileMode.OpenOrCreate);
_valueFs = new FileStream($"{basePath}\\{path}_data", FileMode.OpenOrCreate);
}
至此,程序部署到iis后,缓存文件的路径默认存放在web站点当中了。
MiniExcel源码位置:MiniExcel: 简单、高效避免OOM的.NET处理Excel查、写、模版填充数据工具。 (gitee.com)https://gitee.com/dotnetchina/MiniExcel