C# 在azure通知中心中处理同一设备的重复条目

C# 在azure通知中心中处理同一设备的重复条目,c#,duplicates,asp.net-web-api,azure-notificationhub,C#,Duplicates,Asp.net Web Api,Azure Notificationhub,我正在应用程序中使用windows azure通知中心向用户提供通知。下面是在notification hub上注册设备的API代码 var platform = registrationCall["platform"].ToString(); var installationId = registrationCall["instId"].ToString(); var channelUri = registrationCall["channelUri"] != null ? regis

我正在应用程序中使用windows azure通知中心向用户提供通知。下面是在notification hub上注册设备的API代码

var platform = registrationCall["platform"].ToString();
var installationId = registrationCall["instId"].ToString();
var channelUri = registrationCall["channelUri"] != null ?
    registrationCall["channelUri"].ToString() : null;
var deviceToken = registrationCall["deviceToken"] != null ?
    registrationCall["deviceToken"].ToString() : null;
string RegistrationID = registrationCall["RegistrationID"] != null ?
    registrationCall["RegistrationID"].ToString() : null;

var userName = HttpContext.Current.User.Identity.Name;

RegistrationDescription registration = null;
AppleRegistrationDescription iosExistingRegistrationByDeviceToken = null;
string UserID = User.Identity.GetUserId().ToString();

var registrationFromHub = await hubClient.GetRegistrationsByChannelAsync(deviceToken, 100);
if (registrationFromHub.Count() >= 1)
{
    iosExistingRegistrationByDeviceToken =
        registrationFromHub.Where(x => x.RegistrationId == RegistrationID)
                           .SingleOrDefault() as AppleRegistrationDescription;
}

if (iosExistingRegistrationByDeviceToken != null)
{
    iosExistingRegistrationByDeviceToken.Tags = new HashSet<string>() { updated tag list };
    registration =
        await hubClient.UpdateRegistrationAsync(iosExistingRegistrationByDeviceToken);
}
else
{
    registration = await hubClient.CreateAppleNativeRegistrationAsync(deviceToken,tags);
}
var platform=registrationCall[“platform”].ToString();
var installationId=registrationCall[“instit”].ToString();
var channelUri=registrationCall[“channelUri”]!=无效的
registrationCall[“channelUri”].ToString():null;
var deviceToken=注册呼叫[“deviceToken”]!=无效的
registrationCall[“deviceToken”].ToString():null;
string RegistrationID=registrationCall[“RegistrationID”]!=无效的
registrationCall[“RegistrationID”].ToString():null;
var userName=HttpContext.Current.User.Identity.Name;
RegistrationDescription注册=空;
AppleRegistrationDescription iosExistingRegistrationByDeviceToken=null;
字符串UserID=User.Identity.GetUserId().ToString();
var registrationFromHub=等待hubClient.GetRegistrationByChannelAsync(deviceToken,100);
if(registrationFromHub.Count()>=1)
{
iosExistingRegistrationByDeviceToken=
registrationFromHub.Where(x=>x.RegistrationId==RegistrationId)
.SingleOrDefault()作为应用程序注册说明;
}
if(iosExistingRegistrationByDeviceToken!=null)
{
iosExistingRegistrationByDeviceToken.Tags=新HashSet(){更新的标记列表};
登记=
等待hubClient.UpdateRegistrationAsync(iosExistingRegistrationByDeviceToken);
}
其他的
{
注册=等待hubClient.CreateAppleNativeRegistrationAsync(deviceToken,标记);
}
我的设备将信息传递给此api方法。我调用这个方法来创建新的注册以及更新现有的注册。但它似乎工作不正常

下面的屏幕截图显示了具有相同PNS(设备令牌)的重复条目。任何人都可以帮助我如何避免重复条目。我想要的是,如果通知中心已经包含设备令牌(PNS),那么它应该简单地更新标记,而不是创建新的注册


通知中心将PNS令牌大写,而设备发送的令牌似乎是小写的。这能解释你的问题吗?@ThomasWeiss谢谢你的回复。如果这解决了我的问题,我将查看此信息。:)它解决了你的问题吗?