0

当我在 localhost 中运行我的项目时,我能够找到该文件并进一步处理它。这是通过这行代码实现的。

path = Path.Combine(Directory.GetCurrentDirectory(), "EmailTemplates\\SuccessOrderWindows10.html");

我能够获得完整的相对路径 C:\etc\etc\etc.. 但是当我将此代码推送到生产环境时,当它到达这个阶段时,它会抛出一个错误

Error One or more occurred. (Could not find a part of the path 'h:\root\home\username\www\sitename\EmailTemplates\SuccessOrderWindows10.html'.)

我做错了什么?

4

1 回答 1

1

发生一个或多个错误。(找不到路径“h:\root\home\username\www\sitename\EmailTemplates\SuccessOrderWindows10.html”的一部分。)

正如错误消息所说,找不到文件路径。在生产环境,请导航到“h:\root\home\username\www\sitename\EmailTemplates”文件夹,查看是否有“SuccessOrderWindows10.html”文件,如果没有相关文件,表示文件丢失,请尝试重新发布包含所有文件的应用程序。

其次,尝试使用IWebHostEnvironment 服务的 ContentRootPath 属性来获取包含应用程序内容文件的目录。代码如下:

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;
    private readonly IWebHostEnvironment _hostEnvironment;

    public HomeController(ILogger<HomeController> logger, IWebHostEnvironment environment)
    {
        _logger = logger;
        _hostEnvironment = environment;
    }

    public IActionResult Index()
    {
        ViewData["WebRootPath"] = Path.Combine(_hostEnvironment.WebRootPath, "Files\\Image1.PNG");
        ViewData["ContentRootPath"] = Path.Combine(_hostEnvironment.ContentRootPath, "Files\\Image1.PNG");
        //ViewData["Directorypath"] = Path.Combine(Directory.GetCurrentDirectory(), "Files\\Image1.PNG");

        return View();
    }

结果:

在此处输入图像描述

有关使用 IWebHostEnvironment 的更多详细信息,您可以查看这篇文章:

在 ASP.NET Core 中获取 Web 根路径和内容根路径

于 2020-08-10T08:32:50.530 回答