Azure 通知中心 CreateOrUpdateInstallationAsync 未失败,但未创建安装

问题描述 投票:0回答:2

我有一个 ASP.NET Web Api,它正在我们的 Azure 通知中心注册 Android 和 iOS 安装。它使用连接字符串创建一个 HubClient

this.azureHub = NotificationHubClient.CreateClientFromConnectionString(
    "Endpoint=sb://OUR-HUB-NS.servicebus.windows.net/;SharedAccessKeyName=DefaultFullSharedAccessSignature;SharedAccessKey=tK/SEXXXXXXXXXXX/7LUtvRoNt+HjToFmP+T++yW5g=",
    "OUR-HUB");

然后我们使用此代码创建安装

try
{
    await azureHub.CreateOrUpdateInstallationAsync(installation, token);
}
catch(Exception e)
{
    this.logger.LogError(e, "CreateOrUpdateInstallationAsync failed with" + e.Message);
    return false;
}

return true;

当我错误配置 NoticationHubClient 时,我收到 401 错误,如果我传递无意义的安装数据,我将收到 400。目前,该调用不会引发错误,因此我将假设我传递的内容是正确的,并且它可以成功连接到集线器。但尚未创建注册。如果我尝试在创建后进行安装

GetInstallationAsync(installation.InstallationId)

我收到一条错误消息,提示无法找到安装,如果我尝试获取所有注册,我会得到一个空列表

var registrations = await azureHub.GetAllRegistrationsAsync(0);

进一步确认我的安装未创建的是,如果我在 Azure 门户中使用“测试发送”,我会收到“消息已成功发送,但没有没有匹配的目标。”适用于 Apple 或 Android 平台

我的注册出了什么问题?

azure azure-notificationhub
2个回答
1
投票

我在相同的命名空间中使用不同的名称重新创建了通知中心,一切都开始工作了。

然后,我在 Azure 门户中重新创建了不工作的中心,现在一切正常了。

我只能说,我之前使用 OSS Service Bus Explorer 删除了集线器,也许以 Azure 不喜欢的方式删除了集线器。

这不是我期待的答案。


0
投票

我也有类似的问题。对

CreateOrUpdateInstallation
的调用运行不会出现错误,但也不创建安装。

我想我明白问题出在哪里了。我相信 Azure 通知中心存在一个错误,如果您删除一个“安装”,然后创建完全相同的一个,即使在删除后等待几分钟,它也不会创建它。

必须有一个缓存层在删除时不会更新,因为如果您更改有关安装的任何内容(标签、用户 ID 等),它就会创建。

我认为创建一个新的通知中心已经解决了这个问题,但这是一个巧合,因为新的中心没有删除的安装。我能够在新旧中心中重现该行为。在与 Microsoft 支持人员通话时,他们可以从日志中确认没有错误,并且没有创建安装。

建议的解决方法:每次添加随机生成的标签,它应该会破坏缓存。

© www.soinside.com 2019 - 2024. All rights reserved.