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

部署带Microsoft Identity的Blazor Server至IIS虚拟应用遇认证错误

解决Blazor Server部署到IIS虚拟应用的Microsoft Identity认证问题

1. 配置路径基址(Path Base)

部署到IIS虚拟应用后,应用根路径变为/虚拟应用名称,需在Program.cs中明确设置路径基址:

var app = builder.Build();

// 添加此行,替换为你的虚拟应用名称
app.UsePathBase("/你的虚拟应用名称");

// 后续中间件配置保持不变
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}
// ... 其他中间件代码

2. 验证Azure AD应用注册的回调URL

确保Azure AD应用注册中添加包含虚拟应用路径的完整回调URL:

  • 回调URL格式:https://你的域名/虚拟应用名称/signin-oidc
  • 同时更新注销回调URL:https://你的域名/虚拟应用名称/signout-callback-oidc

3. 修正appsettings.json中的AzureAd配置

保证CallbackPath和SignedOutCallbackPath为相对路径,不要硬写绝对路径:

"AzureAd": {
  "Instance": "https://login.microsoftonline.com/",
  "Domain": "你的域名",
  "TenantId": "你的租户ID",
  "ClientId": "你的客户端ID",
  "CallbackPath": "/signin-oidc",
  "SignedOutCallbackPath": "/signout-callback-oidc"
}

4. 配置IIS URL重写规则(可选)

若存在路由问题,可在项目根目录创建web.config添加重写规则:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Blazor Virtual App Route" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/你的虚拟应用名称/{R:0}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

5. 检查IIS应用池设置

  • 应用池的.NET CLR版本需匹配项目目标框架(如.NET 6.0及以上)
  • 应用池身份设置为ApplicationPoolIdentity或具备足够权限的账户

6. 清除缓存后重新测试

部署完成后,清除浏览器缓存或使用隐私窗口测试,避免旧认证会话干扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:11:31