我正在编写一个Windows Phone 7应用程序,它利用推送通知,并有一个类负责管理MS通知服务器和我的服务之间的交互云。但是,当我试图打开我的设备上的通道HttpNotificationChannel正在抛出一个InvalidOperationException与消息“无法打开通道”。根据MSDN我应该尝试再次打开该频道。HttpNotificationChannel打开()抛出InvalidOperationException(“未能打开通道”)
我打开推送通知的代码片段遵循标准模式;
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的意思是“尝试再次打开频道”。我在try/catch中打开了Open()的调用,并在两次尝试之间打盹5秒,但它不成功。我也在整个方法中尝试了相同的方法(即每次抛出时都要调用HttpNotificationChannel.Find())无济于事。
我知道这有点含糊 - 但想知道是否有人对此有什么建议?这个相同的代码在模拟器中完美地工作,但是每次都在我的实际设备上失败,即使在卸载和重新安装我的应用程序之后。鉴于这是我的实际手机,我有点不愿意做一个硬件重置,希望它能解决这个问题,并且不愿意将这个应用程序发布到市场上,而这个问题让我感到困扰。
更新:另外一点,我使用未经身份验证的渠道,因此没有为我的基于云的服务安装证书。
更新#2:此外,我只是尝试将Microsoft Phone Push Recipe部署到我的设备,它也引发相同的异常。
是啊 - 我已经试过我的设备设置为飞行模式,并连接到我的WiFi以确保它不是我的3G数据提供商造成的问题。 – MrMDavidson 2011-03-01 20:21:24
为了澄清,Find()方法是在WP7'HttpNotificationChannel'类中提供的静态方法,我没有明确地进行任何通道存储。此外,这应用程序重新安装后仍然存在,所以不应该有一个挥之不去的通道。我也尝试关闭()该频道,重新启动应用程序,并看看是否有帮助。没有骰子。我正在使用未经认证的频道(即没有涉及证书),所以3出局。在模拟器上,创建过程完美无缺地工作,对#4很怀疑,但会一步一步地再次完成。 – MrMDavidson 2011-03-01 20:28:11
这个问题解决了吗? – curiosity 2011-09-12 09:28:40