【问题标题】:Null Exception in Azure Mobile service channelAzure 移动服务通道中的空异常
【发布时间】:2013-08-03 16:59:40
【问题描述】:

我正在做 windows phone 上的推送通知教程。一开始推送通知没有问题。

然而,几天后我打开编码并得到这个错误:

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=UtemFtmkDB
  StackTrace:
       at UtemFtmkDB.MainPage.ButtonSave_Click(Object sender, RoutedEventArgs e)
       at System.Windows.Controls.Primitives.ButtonBase.OnClick()
       at System.Windows.Controls.Button.OnClick()
       at System.Windows.Controls.Primitives.ButtonBase.<OnMouseLeftButtonUp>b__3()
  InnerException: 

在 App.xaml.cs 中:

private void AcquirePushChannel()
{
    CurrentChannel = HttpNotificationChannel.Find("MyPushChannel");


    if (CurrentChannel == null)
    {
        CurrentChannel = new HttpNotificationChannel("MyPushChannel");
        CurrentChannel.Open();
        CurrentChannel.BindToShellTile();
    }


}

每当我从:App.CurrentChannel.ChannelUri.ToString() 检索数据时,我都会收到此错误。为什么?

【问题讨论】:

    标签: azure push-notification azure-mobile-services mpns windows-phone-8


    【解决方案1】:

    频道可能尚未达到“已连接”状态。

    检查:

    CurrentChannel.ConnectionStatus == ChannelConnectionStatus.Connected
    

    一旦这是真的,你应该有一个 ChannelUri 的非空值。

    【讨论】:

      【解决方案2】:

      您需要连接到 ChannelUriUpdated 事件:

      private void AcquirePushChannel()
      {
          CurrentChannel = HttpNotificationChannel.Find("MyPushChannel");
      
          if(null != CurrentChannel)
          {
              CurrentChannel.ChannelUriUpdated += CurrentChannelOnChannelUriUpdated;        
          }
          else
          {
              CurrentChannel = new HttpNotificationChannel("MyPushChannel");
              CurrentChannel.ChannelUriUpdated += CurrentChannelOnChannelUriUpdated;        
      
              CurrentChannel.Open();
              CurrentChannel.BindToShellTile();
          }
      }
      
      private void CurrentChannelOnChannelUriUpdated(object sender, NotificationChannelUriEventArgs args)
      {
          // you can now get the URI from args.ChannelUri
      }
      

      请注意,现有频道的频道 uri 也可能会发生变化。因此,无论您是否创建新频道,您都应该监听 ChannelUriUpdated 事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多