可能出现这种情况的原因是,ASP.NET Core 5 根据大小写敏感的规则查找路由。Linux文件系统是大小写敏感的,而Windows则不是。
解决此问题的方法是,在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddRouting(options => options.LowercaseUrls = true);
这将强制将URL转换为小写,并使路由变得不区分大小写。这样,无论在Linux还是Windows上,ASP.NET Core 5都将能够找到正确的路由。
完整代码示例:
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection;
namespace MyProject { public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddRouting(options => options.LowercaseUrls = true); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}