AS.NET Core Web API 在发布到 IIS 后 WebRootPath 总是返回空白或空

问题描述 投票:0回答:0

我已经使用 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 吗?

asp.net-core asp.net-web-api iis-7
© www.soinside.com 2019 - 2024. All rights reserved.