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 Service 的 Teams 通道的 IP 地址限制
csharp .NET Core中的Azure通知中心REST API [读取/删除通道的所有注册]