Azure 移动服务通道中的空异常

Posted

技术标签:

【中文标题】Azure 移动服务通道中的空异常【英文标题】:Null Exception in Azure Mobile service channel 【发布时间】: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() 检索数据时,我都会收到此错误。为什么?

【问题讨论】:

【参考方案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 事件。

【讨论】:

以上是关于Azure 移动服务通道中的空异常的主要内容,如果未能解决你的问题,请参考以下文章

Azure WebJob“无法创建 SSL/TLS 安全通道”

将Azure Bot服务与非通道可配置的聊天服务配合使用

Azure Bot Service 的 Teams 通道的 IP 地址限制

csharp .NET Core中的Azure通知中心REST API [读取/删除通道的所有注册]

使用 Azure CLI 部署 Azure 机器人通道 - 无法创建机器人通道

管道中的通道关闭异常