我有一个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平台,都可以进一步确认我的安装没有被创建
我的注册怎么了?
2条答案
按热度按时间qlzsbp2j1#
我重新创建了一个不同名称的通知中心,在相同的名称空间和一切刚刚开始工作。
然后,我在Azure Portal中重新创建了非工作中心,现在它都工作了。
我所能说的是,我以前使用OSS Service Bus Explorer删除了集线器,也许是以Azure不喜欢的方式删除了集线器。
不是我期待的答案。
cdmah0mi2#
我也遇到过类似的问题。对
CreateOrUpdateInstallation
的调用可以正常运行,但也不会创建安装。我想我知道问题出在哪了。我相信Azure通知中心中存在一个错误,如果您删除“安装”,然后创建完全相同的安装,即使在删除后等待几分钟,它也不会创建它。
必须有一个在删除时不会更新的缓存层,因为如果您更改了有关安装的任何内容(标记、用户ID等),它就会创建。
我以为创建一个新的通知中心已经解决了这个问题,但这是一个巧合,因为新的中心没有删除的安装。我能够在新的和旧的中心重现的行为。在与微软支持人员的通话中,他们可以从日志中确认没有错误,也没有创建安装。
建议的变通方法:每次添加一个随机生成的标签,它应该击败该高速缓存。