ASP.NET Core / Kestrel无法始终提供静态内容

问题描述 投票:0回答:1

背景信息:

  • 带有RazorPages的ASP.NET Core v3.1
  • 在本地可以正常运行(在本地运行Win10和Kestrel)
  • 在部署到Linux VM(Ubuntu 18)时,返回wwwroot / only中的文件的404,Bootstrap在本地运行良好,没有404s] >>
  • 使用dotnet publish -r linux-x64发布
  • 已部署的应用程序正在运行Kestrel,并且正在从NGINX转发请求。
  • Startup.cs

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    /// Included before other middleware (needed due to nginx forwarding)
    /// Per: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();

    app.UseCookiePolicy(); // -- Added for AaaS?

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        // Added to allow controllers
        endpoints.MapControllers();

        // Original Razor Page way
        endpoints.MapRazorPages();
    });

}

_ Layout_.cshtml

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - Title</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
</head>

wwwroot /的局部布局>:

  • css /
    • site.css
    • js /
      • site.js
  • lib /
    • bootstrap /
      • dist /
    • css /
      • bootstrap.css
  • jquery /
  • 背景信息:带RazorPages的ASP.NET Core v3.1在本地运行良好(本地主机上为Win10和Kestrel),只有在部署到Linux VM(Ubuntu 18)时,wwwroot /中的文件才返回404,Bootstrap可以运行...

    twitter-bootstrap asp.net-core razor http-status-code-404 kestrel-http-server
    1个回答
    0
    投票

    已解决。

    原来,我在运行dotnet aspSample.dll时没有注意我所在的目录。结果是,我的“内容根路径”将根据执行该命令时所在的位置而改变。为了解决该问题,我必须确保我在Ubuntu VM上的正确目录中,在我的情况下为/publish/然后

    © www.soinside.com 2019 - 2024. All rights reserved.