Skip to content

Fix/studio tenant header guid - #30

Merged
SamTangJunwen merged 3 commits into
developfrom
fix/studio-tenant-header-guid
Jun 18, 2026
Merged

Fix/studio tenant header guid#30
SamTangJunwen merged 3 commits into
developfrom
fix/studio-tenant-header-guid

Conversation

@SamTangJunwen

Copy link
Copy Markdown
Contributor

分支类型

  • feature/* → 目标分支:develop
  • release/* → 目标分支:main(合并后需同步回 develop)
  • hotfix/* → 目标分支:main(合并后需同步回 develop)
  • 其他:fix/studio-tenant-header-guid → 目标分支:develop(Studio Blazor WASM 缺陷修复)

变更说明

修复 BioTrace.Elsa.Abp.Studio.BlazorWasm 在 Blazor WASM 下将中文等非 ASCII 租户名写入 __tenant HTTP 头,导致浏览器 fetch() 抛出 Failed to execute 'append' on 'Headers': String contains non ISO-8859-1 code point 的问题。

根因: AbpTenantHeaderDelegatingHandler 使用 CurrentTenantName 设置 __tenant;浏览器 Fetch 规范要求 Header 值为 ISO-8859-1,CJK 字符会直接失败。

实现:

  1. Studio 包(fix(studio)

    • __tenant 改为发送 CurrentTenantId(Guid D 格式),与 ABP HeaderTenantResolveContributor 兼容
    • 扩展 IAbpStudioTenantContextCurrentTenantIdCurrentTenantDisplayNameSetCurrentTenantAsync 接受 Guid?
    • AbpStudioTenantContextbiotrace.elsa.studio.tenantId 持久化 Id;启动时从旧 key(租户名)迁移
    • UserMenu 下拉 Value 改为 tenant.Id,展示仍用 DisplayName
    • 新增 AbpTenantHeaderDelegatingHandler 单元测试
  2. 演示 Host(feat(host)

    • 种子数据新增中文租户「宝通」及 DemoCjkTenantWorkflow,供 E2E 与本地复现
  3. E2E(test(e2e)

    • Host admin 切换「宝通」后断言:无 Fetch Header 报错、__tenant 为 Guid、identity/users/me 与工作流列表正常

破坏性变更: IAbpStudioTenantContext.SetCurrentTenantAsync 签名由 string? tenantName 改为 Guid? tenantId。若有自定义实现需同步调整。

关联

Relates to BioTrace.Nexus 侧报告的 Studio WASM 中文租户切换失败问题(AbpTenantHeaderDelegatingHandler + UseAbpTenantApi: true

测试

  • dotnet build BioTrace.Elsa.Abp.slnx
  • dotnet test BioTrace.Elsa.Abp.slnx(56 项通过,含新增 Handler 单测)
  • npx playwright test tests/studio-tenancy.spec.ts -g "CJK"(CJK 租户切换 E2E 通过)
  • 已在调用方应用中验证(如适用)— 待在 BioTrace.Nexus 合并包版本后验证

发布说明(仅 release/hotfix 合并到 main 时填写)

不适用(目标分支为 develop)。下次 Studio 包发版时建议注明:SetCurrentTenantAsync 签名变更;__tenant 现传 Guid 而非租户名。

SamTangJunwen and others added 3 commits June 18, 2026 02:42
Blazor WASM 下 Fetch 要求 Header 值为 Latin-1,中文租户名会导致请求失败。
改为持久化并发送 CurrentTenantId,UserMenu 下拉 value 使用租户 Id。

Co-authored-by: Cursor <cursoragent@cursor.com>
为 E2E 与本地验证提供 UseAbpTenantApi 场景下的 CJK 租户名;
Studio 静态配置补充对应 DisplayName。

Co-authored-by: Cursor <cursoragent@cursor.com>
Host admin 切换「宝通」后断言无 Fetch Header 错误、__tenant 为 Guid、
identity/users/me 与工作流列表正常。

Co-authored-by: Cursor <cursoragent@cursor.com>
@SamTangJunwen
SamTangJunwen merged commit 9663c98 into develop Jun 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant