ASP.NET Core Web API与React应用合并部署报错排查与解决
.NET 8 Web API合并React部署时wwwroot文件报错的解决方法
错误原因
你添加的.csproj配置误触发了.NET的Blazor静态资源编译逻辑——哪怕你没用到Blazor,一旦配置里包含了针对Razor组件/JS模块的规则(比如错误使用<RazorComponent>、<JSModule>标签,或开启了Razor编译选项),.NET会把wwwroot里的React静态文件当成Blazor组件关联的JS模块,又找不到对应的Razor组件,因此抛出该错误。
解决步骤
修正.csproj的静态资源配置
删除所有和Blazor、Razor组件相关的配置项,只保留正确的静态资源发布规则:<ItemGroup> <Content Include="wwwroot\**" CopyToPublishDirectory="PreserveNewest" /> </ItemGroup>这个配置会将wwwroot下所有文件纳入发布包,且保留最新版本。
移除Blazor相关依赖和配置
- 检查项目NuGet包,移除
Microsoft.AspNetCore.Components、Microsoft.AspNetCore.Components.Web等Blazor相关包; - 检查Program.cs(.NET 8已替代Startup.cs),删除
AddBlazor()、MapBlazorHub()之类的Blazor服务配置代码。
- 检查项目NuGet包,移除
清理并重新编译项目
执行以下命令清除编译缓存,避免残留逻辑干扰:dotnet clean dotnet build
后续静态资源配置
解决报错后,在Program.cs中添加静态文件服务配置,确保React资源能被正确访问:
// 启用默认文件(优先返回index.html) app.UseDefaultFiles(); // 启用静态文件服务,托管wwwroot下的资源 app.UseStaticFiles(); // 注意:这两个配置要放在API路由配置(比如app.MapControllers())之前,确保静态文件请求先被处理
内容的提问来源于stack exchange,提问作者user734119
相关产品推荐
相关产品推荐

