无法使用 IHostingEnvironment 获取路径



我正在.Net Core 2.1中创建项目api,在我的创业.cs中,我补充说:

services.AddSingleton<IPathProvider, PathProvider>();  

之后,重新处理 IPathProvider 接口和类:

public interface IPathProvider
{
string MapPath(string path);
}
public class PathProvider : IPathProvider
{
private IHostingEnvironment _hostingEnvironment;
public PathProvider(IHostingEnvironment environment)
{
_hostingEnvironment = environment;
}
public string MapPath(string path)
{
var filePath = Path.Combine(_hostingEnvironment.WebRootPath, path);
return filePath;
}
}

然后,在我的 api cs 文件中,我编写代码:

private IHostingEnvironment _hostingEnvironment;
public PowerControlController(IHostingEnvironment environment)
{
_hostingEnvironment = environment;
}
public string MapPath(string path)
{
var filePath = Path.Combine(_hostingEnvironment.WebRootPath, path);
return filePath;
}

现在,在主 API 中,我调用 mappath:

public ActionResult<string> GetListPowerSwitch()
{
try
{
var path = MapPath("../DataDen/DataDen.xml");
return path;
}
catch (Exception ex)
{
return ex.ToString();
}
}

在本地调试时效果很好。但是,当我将其作为新应用程序发布到 IIS Web 服务器时,它返回 ex。ToString(( 表示:

System.ArgumentNullException:值不能为空。 参数名称:路径 1 at System.IO.Path.Combine(String path1, String path2( at LedControlPowerApi.Controllers.PowerControlController.GetListPowerSwitch(( in E:\PROJECT EMEC\LedControlPrj\LedControlPowerApi\Controllers\PowerControlController.cs:line 55

第 55 行是:var path = MapPath("../DataDen/DataDen.xml");
有人告诉我如何修复此错误?谢谢

我认为您需要使用ContentRoot而不是WebRoot因为对于 ASP.NET Core 2 API项目,已发布的API项目中没有wwwroot文件夹。

检查此 https://github.com/aspnet/Mvc/issues/6688

相关内容

  • 没有找到相关文章

最新更新