You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Staging环境下Microsoft Identity嵌入资源404问题求解

问题根因

ASP.NET Core中Razor类库(RCL)附带的静态Web资产默认仅在Development环境下自动启用映射。Microsoft Identity UI的内置CSS、JS等资源都封装在Microsoft.AspNetCore.Identity.UI这个RCL中,当切换到Staging/Production这类非开发环境时,默认不会加载RCL的静态资产映射,因此所有~/Identity/开头的资源路径都会返回404。
开发环境下框架会自动调用UseStaticWebAssets()方法完成RCL静态资源的路由映射,非开发环境该方法默认不会执行,这是框架的安全默认设计。

修复方案

分两种场景选择对应方案:

场景1:本地调试运行Staging环境

在Program.cs的初始化部分显式配置非开发环境也启用静态Web资产即可:

var builder = WebApplication.CreateBuilder(args);

// 添加这段配置,非开发环境也启用静态Web资产映射
if (!builder.Environment.IsDevelopment())
{
    builder.WebHost.UseStaticWebAssets();
}

// 后续原有配置保持不变
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
// ...其他服务注册

场景2:部署到Staging/Production服务器

无需修改代码,直接使用dotnet publish命令发布项目即可,发布过程中框架会自动将Microsoft.AspNetCore.Identity.UI RCL中的所有静态资源提取到发布包的wwwroot目录下,配合已经注册的UseStaticFiles中间件即可正常访问。

注意:不要在生产环境长期开启UseStaticWebAssets(),该配置是为开发阶段设计的,生产环境直接使用发布出来的静态文件即可,性能和安全性更优。

内容的提问来源于stack exchange,提问作者panpawel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 00:03:02