【发布时间】:2018-08-30 05:32:25
【问题描述】:
我有一个基于 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();
}
}
但是当我在 ARM (dotnet publish -r linux-arm) 上发布 Linux 项目并将其推送到测试系统时,浏览器无法检索静态文件。无论文件如何命名,服务器总是返回 HTTP 404,当然我在 Unix 系统上尊重大小写,所以它不应该是Asp.Net Core Web Application Static Files Gives 404 on Linux。
服务器进程可以读取 wwwroot 目录内容。我使用File.ReadAllText(<full path to file in wwwroot>)对此进行了测试。
服务器仅在 localhost 上运行,因此该项目不使用其他服务器,例如 ngingx。
【问题讨论】:
-
我遇到了同样的问题,但我的解决方案是将我的 Index.html 重命名为 index.html。 Linux 似乎对文件的大小写更敏感,我不知道如何在 linux 上为 Kestrel 设置默认页面。
-
@Quintonn 是的,Unix 系统上使用的文件系统(通常)区分大小写。但这不是我的问题。
标签: c# .net-core asp.net-core-webapi