我已经使用 ASP.NET Core 3.1 Web API 构建了一个 Angular 应用程序。我已经创建了一些报告并将它们存储在根目录下的
Reports
文件夹下。在开发中一切正常。
WebRootPath
在发布到 IIS 后始终为空(空字符串但不为空),但是 ContentRootPath
返回根文件夹路径。我想知道为什么WebRootPath
在发布到IIS后是空白的。我确保 wwwroot
文件夹在发布时包含在输出目录中。
请查看我的代码以获取网络托管环境:
private IWebHostEnvironment _hostEnv;
public ReportController(ILoggerManager logger, IReportService reps, IWebHostEnvironment env)
{
_hostEnv = env;
}
public IActionResult RunReport()
{
// other code....
report.ReportPath = _hostEnv..WebRootPath.Replace("wwwroot", "") + @"\Reports\SalesSummary.rdlc";
string imagePath = _hostEnv..WebRootPath + @"\Storage\Invoice\InvLogo.png";
}
我正在使用如上所示的
WebRootPath
来设置报告和图像路径。但是代码不起作用,因为文件夹路径为空..
Reports
文件夹在根文件夹下,Images
文件夹在wwwroot
文件夹里面
请参阅下面的文件夹结构(忽略不同的 Images 文件夹)
如何在 ASP.NET Core 中指定报告和其他内容的路径?
wwwroot
文件夹是必须的吗?
请帮忙
更新: 发布到 IIS 后,应用程序的其余部分工作正常。仅与报告和图像路径有关。我得到的错误是“对象引用未设置为对象的实例。”因为
_hostEnv.WebRootPath
返回空字符串。
我在默认的“inetpub”文件夹外发布了我的应用程序。我不知道
如果 wwwroot 仍然相关。我可以开始使用 ContentRootPath 而忽略 webrootpath 吗?