我正在编写一个 Windows Phone 7 应用程序,它利用推送通知并有一个类负责管理 MS 通知服务器和我在云中的服务之间的交互。但是,当我尝试在我的设备上打开频道时,HttpNotificationChannel 会抛出 InvalidOperationException 并显示消息“无法打开频道”。根据MSDN ,我应该尝试再次打开频道。
我打开推送通知的代码片段遵循以下标准模式;
public class HttpNotification {
private const string kChannelName = "MyApp.PushNotification";
private HttpNotificationChannel _Channel;
public void Register() {
try {
_Channel = HttpNotificationChannel.Find(kChannelName);
if (_Channel == null) {
_Channel = new HttpNotificationChannel(kChannelName);
InstallEventHandlers();
// This line throws
_Channel.Open();
} else {
InstallEventHandlers();
};
} catch (InvalidOperationException ex) {
MessageBox.Show(string.Format("Failed to initialise Push Notifications - {0}", ex.Message));
};
}
}
我不确定 MSDN 的“尝试再次打开频道”到底是什么意思。我已经将对 Open() 的调用包装在 try/catch 中,并在两次尝试之间打盹 5 秒,但它没有成功。我还在整个方法周围尝试了相同的方法(即每次抛出时都调用 HttpNotificationChannel.Find() )但无济于事。
我知道这有点含糊 - 但想知道是否有人对处理这个有任何建议?相同的代码在模拟器中完美运行,但每次在我的实际设备上都失败,即使在卸载并重新安装我的应用程序之后也是如此。鉴于这是我的实际手机,我有点不愿意进行硬件重置,希望它能解决这个问题,并且在这个问题困扰着我的情况下将应用程序发布到市场上感到不舒服。
更新:另外一点,我使用的是未经身份验证的通道,因此没有为我的基于云的服务安装证书。
更新 #2:此外,我刚刚尝试将 Microsoft Phone Push Recipe 部署到我的设备,它也抛出了相同的异常。