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

如何更新Azure通知中心的Registration TTL配置?

Azure Notification Hub 修改Registration TTL为90天方案

问题根因

自API版本2017-04-01起,Azure Notification Hubs控制平面将RegistrationTtl属性标记为只读,当前Azure Portal、新版Azure CLI、新版C# Management SDK默认调用的都是2017及之后版本的API,提交的RegistrationTtl修改请求会被服务端静默忽略——不会返回报错,但配置不会实际更新。这也是数年前同操作可以正常生效的核心原因:早期服务端默认使用2016版API,该属性支持写入。

验证可用的修改方式

方式1:ARM模板部署(稳定性最高)

使用API版本2016-03-01(目前唯一稳定支持修改该属性的API版本)编写最小化部署模板,部署到通知中心所在资源组即可:

{
  "$schema": "ARM部署模板标准schema定义",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.NotificationHubs/namespaces/notificationHubs",
      "apiVersion": "2016-03-01",
      "name": "[concat(parameters('namespaceName'), '/', parameters('hubName'))]",
      "location": "[resourceGroup().location]",
      "properties": {
        "registrationTtl": "P90D"
      }
    }
  ],
  "parameters": {
    "namespaceName": {
      "type": "string",
      "metadata": {
        "description": "Notification Hub所属命名空间名称"
      }
    },
    "hubName": {
      "type": "string",
      "metadata": {
        "description": "待修改配置的Notification Hub名称"
      }
    }
  }
}

部署完成后等待3-5分钟,即可在通知中心属性页看到TTL更新为90天。

方式2:Azure PowerShell直接调用API

无需编写模板,直接通过PowerShell调用控制平面接口修改:

# 登录Azure账号
Connect-AzAccount
# 替换为自身环境的参数
$subscriptionId = "订阅ID"
$resourceGroupName = "资源组名称"
$namespaceName = "通知中心命名空间名称"
$hubName = "通知中心名称"
$apiVersion = "2016-03-01"

# 构造请求地址
$requestUri = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.NotificationHubs/namespaces/$namespaceName/notificationHubs/$hubName`?api-version=$apiVersion"

# 拉取现有通知中心配置
$hubConfig = Invoke-AzRestMethod -Method Get -Uri $requestUri
$hubObj = $hubConfig.Content | ConvertFrom-Json

# 更新TTL为90天(ISO 8601时长格式)
$hubObj.properties.registrationTtl = "P90D"

# 提交更新请求
$requestBody = $hubObj | ConvertTo-Json -Depth 10
Invoke-AzRestMethod -Method Put -Uri $requestUri -Payload $requestBody

避坑说明

  • 不要使用数据平面的NotificationHubClient类相关SDK修改该配置:RegistrationTtl是控制平面级别的资源属性,数据平面API无修改权限,之前调用的NotificationHubCreateOrUpdateParameters()如果属于数据平面SDK,本身就不支持修改该参数。
  • 目前Azure Portal已隐藏全局Registration TTL的修改入口,界面上可见的TTL相关配置为临时注册过期策略,修改后不会改变全局注册生存时间。
  • 配置生效后,存量超过90天未更新的注册记录会在服务端下一次清理周期内自动删除,后续新注册的设备若90天内未主动刷新注册信息,也会被自动清理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:03:18