Azure Notification Hub CreateOrUpdateInstallationAsync未失败,但未创建安装

fv2wmkja  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(86)

我有一个ASP.NET Web API,它正在我们的Azure Notification Hub中注册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 Portal中使用“测试发送”,我会得到“消息已成功发送,但没有匹配的目标。”,无论是Apple还是Android平台,都可以进一步确认我的安装没有被创建
我的注册怎么了?

qlzsbp2j

qlzsbp2j1#

我重新创建了一个不同名称的通知中心,在相同的名称空间和一切刚刚开始工作。
然后,我在Azure Portal中重新创建了非工作中心,现在它都工作了。
我所能说的是,我以前使用OSS Service Bus Explorer删除了集线器,也许是以Azure不喜欢的方式删除了集线器。
不是我期待的答案。

cdmah0mi

cdmah0mi2#

我也遇到过类似的问题。对CreateOrUpdateInstallation的调用可以正常运行,但也不会创建安装。
我想我知道问题出在哪了。我相信Azure通知中心中存在一个错误,如果您删除“安装”,然后创建完全相同的安装,即使在删除后等待几分钟,它也不会创建它。
必须有一个在删除时不会更新的缓存层,因为如果您更改了有关安装的任何内容(标记、用户ID等),它就会创建。
我以为创建一个新的通知中心已经解决了这个问题,但这是一个巧合,因为新的中心没有删除的安装。我能够在新的和旧的中心重现的行为。在与微软支持人员的通话中,他们可以从日志中确认没有错误,也没有创建安装。
建议的变通方法:每次添加一个随机生成的标签,它应该击败该高速缓存。

相关问题