Azure 自定义域名仍绑定旧订阅怎么办?App Service 与 Static Web Apps 排查

先区分 DNS 验证和平台残留绑定,再安全迁移或向 Azure Support 申请释放

Azure App Service 或 Static Web Apps 提示自定义域名被旧订阅占用时,检查 DNS、旧资源、权限和证书,安全迁移或申请释放。

直接答案:Azure App Service 或 Azure Static Web Apps 添加自定义域名时,如果提示域名已被占用、已绑定到其他资源,先不要反复改 A、CNAME 或 TXT 记录。先证明当前 DNS 控制权,再检查自己能访问的订阅中是否还有旧绑定。旧应用仍可访问时,应先从旧资源删除自定义域名;旧订阅、旧租户或旧应用已经无法访问时,保留报错、域名所有权和资源信息,向 Azure Support 申请解除残留关联。

这类问题与“DNS 尚未生效”不是一回事。DNS 记录可以已经指向新应用,但 Azure 平台内部仍可能认为该主机名属于旧资源。直接切换生产 DNS 可能造成停机,删除证书也不一定能释放主机名。

先判断是 DNS 验证失败,还是旧资源仍占用

现场优先判断下一步
门户提示找不到 CNAME、A 或 TXTDNS 记录错误、尚未传播或查错主机名从公共 DNS 只读查询开始
DNS 验证通过,但提示域名已绑定到其他 Azure 资源旧 App Service、Static Web Apps、Front Door 等仍有关联查旧订阅和旧资源;无访问权则提交支持请求
域名已添加,但 HTTPS 证书长期未签发域名解析、证书绑定或公网可达性问题先保持旧入口,再单独查证书状态
按钮灰色或立即报权限错误当前身份缺少资源权限,或资源有只读锁核对角色和资源锁,不改 DNS

先把门户原始报错、发生时间、目标订阅 ID、资源组、应用名称、目标主机名和当前登录租户记下来。截图必须遮挡订阅 ID、租户 ID、邮箱和支持工单信息;不要在公开问答中贴完整账户资料。

用只读查询确认当前 DNS

以下命令只查询公共 DNS,不会修改域名。把示例域名替换为实际主机名。Windows 可使用 Resolve-DnsName,Linux 或 macOS 可使用 dig

Resolve-DnsName www.example.com -Type CNAME
Resolve-DnsName asuid.www.example.com -Type TXT
Resolve-DnsName _dnsauth.www.example.com -Type TXT
dig +short CNAME www.example.com
dig +short TXT asuid.www.example.com
dig +short TXT _dnsauth.www.example.com

asuid 常用于 App Service 的域名所有权验证;_dnsauth 用于 Static Web Apps 的 TXT 验证场景。不要同时照抄两套记录。以目标产品“添加自定义域”页面当前显示的主机和值为准。

查询结果为空时,先到实际托管 DNS 的服务商检查记录。只在注册商面板增加记录但权威 DNS 已迁到别处,公共查询仍然看不到。结果正确但门户未通过时,等待记录 TTL 对应的传播时间后重试;不要通过不断删除和重建记录来“刷新”。

旧资源还能访问时,按什么顺序迁移

如果仍能进入旧订阅和旧应用,最安全的办法是先验证新资源,再解除旧绑定,最后切换流量。生产域名迁移前先确认新应用的默认域名可以正常打开,页面、登录、回调、上传和健康检查都通过。

  1. 在新资源的自定义域名页面取得 TXT 验证值,只添加所有权验证记录,不先改生产 A 或 CNAME。
  2. 等待公共 DNS 可以查询到 TXT,并在新资源完成所有权验证。
  3. 检查旧 App Service、Static Web Apps、Front Door 和其他可能使用该主机名的资源。
  4. 保存旧 DNS、证书绑定、TLS 设置和应用入口信息,再从旧资源删除该自定义域名绑定。
  5. 在新资源添加主机名,确认状态正常后,再修改生产 A、CNAME、ALIAS 或 ANAME。
  6. 保留旧应用和旧 DNS 配置到至少一个 TTL 窗口结束,并观察新旧入口日志。

删除“自定义域名绑定”不等于删除注册域名,也不等于注销 DNS 区域,但会让旧应用不能再用该主机名接收请求。操作前必须确认新入口已准备好。App Service 托管证书通常要在主机名映射完成后单独检查,不要因为证书尚未出现就提前删除旧入口。

旧订阅或旧租户无法访问怎么办

如果旧订阅已删除、旧租户不可用,或者资源不在任何当前可见订阅中,本地没有一条安全命令可以强制释放平台内部关联。此时应从 Azure 门户“帮助 + 支持”创建支持请求,说明这是自定义域名残留绑定或主机名释放问题。

工单至少提供以下信息:

  • 受影响的完整主机名,例如 www.example.com,不要只写根域;
  • 当前目标资源的订阅、资源组、资源类型和应用名称;
  • 旧订阅、旧应用或旧租户的已知信息,以及为何无法自行删除绑定;
  • 门户完整错误文本、发生时间和已尝试步骤;
  • 当前公共 DNS 查询结果,以及按门户要求建立的所有权 TXT 记录;
  • 是否为生产域名、当前是否停机、旧流量入口是否还能访问。

不要向非官方人员提供域名注册商密码、Azure 密码、MFA 验证码、客户端密钥或完整访问令牌。支持人员需要的是资源标识、错误证据和域名控制权证明,不是登录凭据。

为什么只改 CNAME 通常解决不了

CNAME 负责把访问流量指向目标主机,TXT 负责证明域名控制权;它们不能直接删除 Azure 内部旧资源上的主机名关联。把 CNAME 从旧应用改到新应用,只会改变 DNS 方向。如果新应用尚未接受该 Host,请求可能出现 Azure 默认 404、证书不匹配或主机名未配置。

反过来,仅有 TXT 验证也不会自动切换流量。合理做法是先用 TXT 验证新资源,再处理旧绑定,最后改流量记录。这样可以把“证明归属”和“切换访问”拆开,减少停机。

按钮不可用和权限错误怎么分支处理

  • 自定义域名入口不可用:确认 App Service 计划是否支持自定义域名。免费或共享层级不满足 App Service 自定义域名要求时,需要先评估升级费用。
  • 提示无权添加主机名:核对当前身份在目标资源或订阅上的角色。不要通过公开 Owner 凭据或共享管理员账户绕过权限。
  • 资源有只读锁:由有权限的管理员临时处理锁,完成变更后按原治理要求恢复。
  • 根域无法使用 CNAME:按 DNS 服务商能力使用 ALIAS、ANAME、CNAME flattening 或产品官方支持的 A 记录方案,不能把子域步骤机械套到根域。
  • Static Web Apps 新域名要求 TXT:按门户给出的 TXT token 方法验证;不要继续依赖旧教程中的 CNAME 验证流程。

费用、停机和数据风险

DNS 查询和增加 TXT 记录通常不产生 Azure 资源费用,但 App Service 计划升级、Azure DNS、Front Door、托管证书之外的证书产品和继续保留旧应用都可能收费。提交变更前,在目标资源的价格与计划页面核对。

域名迁移不会直接删除应用数据,但错误解除旧绑定或提前切换 DNS 会造成访问中断。真正的数据风险来自为了“重新部署”而删除旧应用、存储或数据库。域名问题没有要求删除业务数据;在确认根因前,不要删除旧资源组、数据库、存储账户或唯一证书私钥。

怎样验证迁移完成

完成绑定后,从公共网络分别检查 DNS、TLS 和应用,不要只看门户显示“成功”。

dig +short www.example.com
curl -I https://www.example.com/

验证结果应满足:公共 DNS 指向预期入口;浏览器证书包含目标域名且未过期;HTTP 返回业务预期状态;登录、回调和静态资源不跳到旧主机;新应用日志能看到请求;旧应用在 TTL 结束后不再接收该域名流量。若任一项失败,保留新资源不动,恢复之前保存的 DNS 记录或旧绑定,再按 DNS、主机名、证书、应用四层重新定位。

相关阅读

官方资料

以下资料核验日期为 2026 年 9 月 16 日。Azure 门户入口、验证方式和产品限制可能变化,以操作时门户提示为准。

本稿未发现需要补充确认的黑鲨云业务事实。

云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13云服务器教程MySQL 报 ERROR 1205 Lock wait timeout 怎么办?阻塞事务与安全止损2026-09-12

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区