Я пишу приложение для Windows Phone 7, которое использует Push-уведомления и имеет класс, отвечающий за управление взаимодействиями между MS Notification Server и моим сервисом в облаке.Однако, когда я пытаюсь открыть канал на моем устройстве, HttpNotificationChannel генерирует исключение InvalidOperationException с сообщением «Не удалось открыть канал».В соответствии с MSDN я должен попытаться снова открыть канал.
Мой фрагмент кода для открытия push-уведомлений соответствует стандартному шаблону:
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 длямое устройство, и оно также выдает то же исключение.