【问题标题】:.net core 2.2 site looks files on wrong path.net core 2.2 站点在错误的路径上查找文件
【发布时间】:2020-11-24 03:32:40
【问题描述】:

我正在维护一个 .net core 2.2 应用程序。在几台计算机上它工作得很好,但是当我将它发布到它应该在的服务器上时,它会在对文件的所有引用中给出错误。示例:File.ReadAllText ("./App/Config.json")。

问题是它在 c:\windows\system32\inetsrv... 中查找文件,而不是在发布站点的文件夹中查找它。这会产生如下错误:

找不到路径“c:\windows\system32\inetsrv\App\Config.json”的一部分。

当然该网站发布在 c:\inetpub\wwwroot[sitename]

什么可能导致这种行为?

【问题讨论】:

标签: asp.net-core


【解决方案1】:

在服务器端代码中使用相对路径并不是一个好习惯。

你应该使用 IWebHostEnvironment 和它的属性 WebRootPath

要访问它,您可以像这样在控制器中执行它:

public class MyController : Controller
{
    private IWebHostEnvironment _env;

    public MyController(IWebHostEnvironment env)
    {
        _env = env;
    }

    public SomeMethod()
    {
        foreach(string filePath in Path.Combine(_env.WebRootPath))
        {
            string file = filePath;
        }
    }
}

如果您不想像这样注入它,或者您需要在 Startup.cs 内的控制器外访问,请添加 public static IWebHostEnvironment _env 并编辑:

public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
    Configuration = configuration;
    _env = env;
}

现在您可以使用Startup._env从任何地方访问它

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2019-08-06
    • 2021-03-01
    相关资源
    最近更新 更多