使用 IIS express 运行 Asp.Net Core 2.0(或 2.2)应用程序时,静态文件(css、js)按预期提供。但是,当通过“dotnet publish -o [targetDirectory]”和 dotnet [website.dll] 使用命令行/Kestrel 时,Kestrel 不会提供任何静态内容。使用浏览器 F12,我看到 Kestrel 返回 404 错误。仔细看,直接在浏览器中输入文件路径(localhost:5000/ css /cssfile.css)文件没有显示,但 浏览器似乎重定向到“localhost:5000/cssfile.css” 但仍然返回404错误(注意缺少的 /css/ 目录)。
我通过 Visual Studio 2017 创建了这个项目,并为新的 MVC Core 2.0 应用程序(安装了 SDK)选择了默认值。
我已按照 此处 的步骤在 program.cs 和 startup.cs 文件中启用静态文件。这些实现“app.UseStaticFiles();”和“.UseContentRoot(Directory.GetCurrentDirectory())”。通过谷歌找到的文章似乎都没有帮助。我已经验证 dotnet 将静态内容复制到目标目录。
我错过了什么?谢谢
// Program.cs
public static IWebHost BuildWebHost(string[] args) => WebHost
.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
// Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseExceptionHandler("/Error/HandleError");
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute( name: "default", template: "{controller=User}/{action=Index}/{id?}");
});
}
原文由 davewilliams459 发布,翻译遵循 CC BY-SA 4.0 许可协议
我无法按照以下步骤使用新的 ASP.NET Core 2.0 项目重现您的错误;
md 静态测试
cd 静态测试
点网新网
css
。site.css
wwwroot/css
。Startup.Configure()
方法的开头插入app.UseStaticFiles();
。dotnet 发布 -o pubweb
cd pubweb
dotnet .\static-test.dll
dotnet.exe
在我的终端中呈现以下输出:如您所见,它将成功地在子文件夹中正确地提供 css 文件。请尝试上述步骤,并将代码和输出与您失败的项目进行比较。如果仍然失败,请在
Request
与Physical
来自Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware
--- 的路径上附加调试信息。