Blazor Server 8部署IIS后样式不显示问题咨询
Blazor Server 8部署IIS样式失效问题原因
.NET 8托管模型变更导致的行为差异
.NET 8将Blazor Server的默认托管模型调整为与普通ASP.NET Core Web App一致的WebApplication模式,而.NET 6/7中Blazor Server采用独立托管逻辑,会自动根据请求上下文推断静态资源的基准路径。到了.NET 8,这个自动适配逻辑被移除,目的是统一所有Blazor托管模型的资源加载行为,使其与常规Web应用对齐。标签的核心作用
本地用dotnet watch run时,应用在根路径/下运行,<base href="/">能让所有相对路径的样式、脚本从根目录加载,所以显示正常。但部署到IIS的/MyBlazor虚拟目录后,页面仍以/为基准请求资源(比如/css/site.css),而实际资源路径是/MyBlazor/css/site.css,因此加载失败。修改<base href="/MyBlazor/" />就是把基准路径改为虚拟目录路径,资源请求就会指向正确位置。这既不是操作失误,也不是微软的bug
这是版本迭代的有意调整,属于正常行为变更。如果不想每次部署都手动修改base路径,可以用动态设置的方式,在App.razor里通过NavigationManager自动获取基准路径:<base href="@NavigationManager.BaseUri" />这样不管是本地开发还是部署到任意虚拟目录,都能自动适配,无需手动修改。
内容的提问来源于stack exchange,提问作者AsM
相关产品推荐
相关产品推荐

