ASP.NET Core 5.0 Web 应用程序 - 将开箱即用的应用程序发布到来自 wwwroot 的静态文件上的 IIS Server 404

Jar*_*ane 1 static-files http-status-code-404 asp.net-core-5.0

创建了一个开箱即用的 ASP.NET Core 5.0 Web 应用程序 - 在本地运行得很好。

将项目发布到文件夹并将内容复制到运行 IIS 的 Windows Server 2019。

安装了ASP.NET Core 5.0 运行时 (v5.0.5) - Windows 托管捆绑包。

应用程序池:.NET CLR版本:为无托管代码管理,管道模式:为集成

项目文件包含:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseStaticWebAssets();
                });
Run Code Online (Sandbox Code Playgroud)

启动包含:

            app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)

引用时,wwwroot 文件夹下的所有内容都会抛出 404 错误:

https://servername.test.com/subapplication/css/site.css
Run Code Online (Sandbox Code Playgroud)

默认页面确实已加载,只是由于未找到文件而没有样式。

默认

Cha*_*ver 5

我在尝试设置我的应用程序时遇到了同样的问题。您只需手动将该wwwroot/文件夹复制到构建文件夹中即可。因此,如果您运行dotnet build,只需将wwwroot/文件夹复制到bin/Debug/net5.0/.

我确信有某种方法可以自动执行此操作,但我目前还不知道,因为我对 ASP.NET Core 相对较新。

以下是有关此解决方案为何有效的一些相关 Microsoft 文档:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-5.0&tabs=windows#web-root

网站根路径默认为{content root}/wwwroot。


https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-5.0

静态文件存储在项目的 Web 根目录中。默认目录是 {content root}/wwwroot,但可以使用 UseWebRoot 方法更改它。

希望这对您有帮助,就像对我有帮助一样!