在 ARM 上发布到 Linux 后无法找到静态文件

use*_*065 3 c# .net-core asp.net-core-webapi

我有一个基于 ASP.NET Core 2.1 的 Web-API 项目。此 Web-API 必须从默认wwwroot文件夹提供静态文件。这适用于我的 Windows 机器上的以下代码(来自 Startup.cs)。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseMvc()
        .UseStaticFiles();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我在ARM ( dotnet publish -r linux-arm)上发布Linux 项目并将其推送到测试系统时,浏览器无法检索静态文件。服务器总是返回 HTTP 404,无论文件如何命名,当然我在 Unix 系统上尊重大小写,所以它不应该被用于Linux 上的 Asp.Net Core Web 应用程序静态文件给出 404

wwwroot 目录内容可由服务器进程读取。我通过使用测试了这个File.ReadAllText(<full path to file in wwwroot>).

该服务器仅在 localhost 上运行,因此该项目不使用其他服务器,如 ngingx。

use*_*065 6

我想我发现了,我做错了什么。我使用完整路径启动了 Web-API。相反,我必须先切换到应用程序目录。

在职的:

cd /home/myuser/testapp
./testapp
Run Code Online (Sandbox Code Playgroud)

工作:

/home/myuser/testapp/testapp
Run Code Online (Sandbox Code Playgroud)

我没有改变任何其他东西,我可以重现这一点,所以首先切换到应用程序目录似乎是必须的。