dav*_*459 9 css c# .net-core asp.net-core
编辑:添加了红隼
使用IIS express运行Asp.Net Core 2.0应用程序时,静态文件(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?}");
});
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*son 18
我尝试了很多无用的东西,这对我来说是个问题:
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseWebRoot("E:\\xyz\\wwwroot")
.UseUrls("http://localhost:5050")
.Build();
Run Code Online (Sandbox Code Playgroud)
我添加时,服务静态文件开始工作:
.UseWebRoot("E:\\xyz\\wwwroot")
Run Code Online (Sandbox Code Playgroud)
我在其中一个运行在端口5000上的服务器上发生了冲突,因此我指定从端口5050开始.
joa*_*del 10
我无法使用新的ASP.NET Core 2.0项目按照这些步骤重现您的错误;
css在wwwroot中添加文件夹.site.css在wwwroot/css.app.UseStaticFiles();在Startup.Configure()方法的开头插入.dotnet.exe 在我的终端中呈现以下输出:
Hosting environment: Production
Content root path: C:\src\static-test\pubweb
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:5000/css/site.css
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
Sending file. Request path: '/css/site.css'. Physical path: 'C:\src\static-test\pubweb\wwwroot\css\site.css'
Run Code Online (Sandbox Code Playgroud)
如您所见,它将成功正确地在子文件夹中提供css文件.请尝试上述步骤,并将代码和输出与失败的项目进行比较.如果它仍然失败,请从上面附上调试信息Request与Physical路径Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.
小智 5
对我来说,问题在于工作目录。尝试使用启动应用程序时,我并没有注意我所在的目录dotnet /var/www/project/project.dll。当您以这种方式启动应用程序时,它会自动将当前目录用作工作目录。
当我查看.service另一个项目的文件时就意识到了这一点,该文件指定了WorkingDirectory:
...
WorkingDirectory=/var/www/project/
ExecStart=/usr/bin/dotnet /var/www/project/project.dll
...
Run Code Online (Sandbox Code Playgroud)
因此,在运行项目时,请确保您位于正确的目录中,或者确保在.service文件中正确设置了WorkingDirectory 。
| 归档时间: |
|
| 查看次数: |
11695 次 |
| 最近记录: |