【发布时间】:2018-02-20 00:44:16
【问题描述】:
使用 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)选择了默认值。
我已按照here 的步骤在 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?}");
});
}
【问题讨论】:
-
文件相对于内容根目录在哪里?在您的情况下,默认值为
wwwroot/css/cssfile.cssAFAIK -
没错,文件位于wwwroot/css/cssfile.css
-
ConfigurationHelper.Configure(Configuration)是做什么的?此外,如果应用程序实际上发送了重定向,那么日志会说什么?打开详细日志记录以查看正在发生的一切。 -
ConfigurationHelper 是一个自定义库,我会确认,但我不认为这是基于没有该行的其他测试的问题。
-
这是通过环境变量 ASPNETCORE_ENVIRONMENT 控制的。要在命令行 (cmd) 中设置它,请使用“set ASPNETCORE_ENVIRONMENT=Development”。
标签: c# css asp.net-core .net-core