none
2つのネットワークに接続している場合の、Notification Hubsによるトースト通知 RRS feed

  • 質問

  • 少し前に作ったプログラムなので、多少Azure側の手順は変わっているかもしれませんが、
    AzureのNotification Hubを利用したプッシュ通知(トースト表示)を実装したUWPアプリを、
    Visual Studio2015+C#で作成しました。

    大まかな作り方は、
    https://azure.microsoft.com/ja-jp/documentation/articles/notification-hubs-windows-store-dotnet-get-started-wns-push-notification/
    ここにあるような方法で、送信相手を特定したいという理由で、
    ここの、[Connect Your app to the notification hub]の部分の4.で書かれているサンプルの、

                hub.RegisterNativeAsync()

    の部分だけ、第二引数を下記の様に与えています。

                var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
                var hub = new NotificationHub(cNotificationHubName, cNotificationConnectString);
                gNotificationHubRegistration = await hub.RegisterNativeAsync(channel.Uri, new string[] { pUserId });

    この状態で、普通のネットワーク構成であれば、[Send notifications]の部分にあるTest Sendで、
    プラットフォームでWindows、Tagに前述の第二引数の値、通知の種類でトーストを選択して実行すると、
    正常にトースト表示を受け取ることができますが、2つのNICで2つのネットワークに接続している状況では、
    トースト表示を受け取ることができません。

    USB-LAN変換アダプタや、NIC2枚等、色々な環境で試しましたが、余分な機器無しで試しやすい環境として、
    Wi-Fiも、有線LANのインタフェースもあるノートパソコンで、Wi-Fiで普通にインターネット接続できる
    LANに接続します(DHCPでOK)。
    そして、有線LANの方で、Wi-Fiで接続しているLANとは異なるネットワークアドレスで、
    IPアドレスとネットワークマスクのみを指定して、LANケーブルでHUBと接続します。
    要は、個別指定したネットワークとの通信のみを有線LANで、それ以外はWi-Fiでという環境です。

    この状態で、同じようにTestSendを行ってみると、トーストが表示されません。
    しかしながら、有線LANポートからLANケーブルを抜くと、間もなくトースト表示が行われます。

    この理由がわかる方、もしくは回避方法がわかる方がいらっしゃいましたら、ご教授ください。

    • 移動 佐伯玲 2016年11月15日 6:17 Windows 10 から UWP アプリ開発 へ
    2016年11月14日 5:36

回答

  • チャブーンです。

    こちらのフォーラムはITPro向けで、コード(C#)を含んだ話しということであれば、MSDNフォーラムに質問しなおしていただいた方がいいかと思います。

    ITPro目線でいえそうなことは、(要は)無線LAN側NICを優先的に使用するよう、OSを設定したらどうなるか、といったことになるかと思います。

    1. ネットワークカードのメトリック値を調整する(無線LAN側の優先順位を高くする)
      ※自動メトリック機能はすべてのNICでOFFにしてください
    2. (自分自身→相手側への通信時に)有線LAN側NICを使った場合も、(結果的に)無線LAN側NICにルーティングするよう、固定ルートを設定する
      route add /p <通信先ネットワークアドレス> <通信先サブネットマスク> <自分の有線LANIPアドレス>

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2016年11月15日 4:36
  • Wi-Fi 側のメトリックを小さく(=優先度を高く)しても解決しなかったと言うことですよね?
    そうなると、ブラックボックス的なところなのでフォーラムで回答を得るのが難しい内容だと思います。

    TechNet か MSDN かで言えば、自作のアプリケーションの話なので MSDN 寄りだとは思います。
    (すでに MSDN フォーラムに移動されています)
    ただし、解決方法はおそらく、ネットワーク環境の設定変更による改善、不具合の回避のためのネットワーク環境の変更、あるいは Windows 側の修正かになるのではないか?と予想していますので、アプリ側の修正での解決は難しいでしょう。

    なお、MSDN インシデントの問い合わせは、既知の情報・公開されている情報の範囲での回答、あるいはバイナリをデバッグして得られた内容にとどまります。
    不具合だと認定されたとしても原因の調査や修正を求めることはできないサポートレベルですのでその点は押さえておいてください。
    (より核心に迫る、あるいは修正をリクエストするならプレミアサポートなどのより上位のサポートが必要。AnswerDesk はコンシューマー向けだと思うので、今回のような技術的な問い合わせにはフォーラムを案内してしまうのでしょうね…)

    2016年11月15日 13:09
    モデレータ

すべての返信

  • チャブーンです。

    こちらのフォーラムはITPro向けで、コード(C#)を含んだ話しということであれば、MSDNフォーラムに質問しなおしていただいた方がいいかと思います。

    ITPro目線でいえそうなことは、(要は)無線LAN側NICを優先的に使用するよう、OSを設定したらどうなるか、といったことになるかと思います。

    1. ネットワークカードのメトリック値を調整する(無線LAN側の優先順位を高くする)
      ※自動メトリック機能はすべてのNICでOFFにしてください
    2. (自分自身→相手側への通信時に)有線LAN側NICを使った場合も、(結果的に)無線LAN側NICにルーティングするよう、固定ルートを設定する
      route add /p <通信先ネットワークアドレス> <通信先サブネットマスク> <自分の有線LANIPアドレス>

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2016年11月15日 4:36
  • こんにちは、しんや さん
    フォーラムオペレータの佐伯 玲 です。

    チャブーンさんからもご案内のあった通り「UWP アプリ開発」フォーラムのほうが情報が集まりやすいかと思いますので私のほうからスレッドを移動させていただきますね。

    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2016年11月15日 6:17
  • ありがとうございます。
    やはり、そこら辺ですかね。
    メトリックに関しては既に試してみましたが、結果は同じです。
    静的ルートに関しても、ルーティングテーブルを確認していますが、問題ないと思われます。
    ありがとうございました。

    最後に、ここに投稿するには不適切な内容だったでしょうか?
    ここに投稿した理由は、マイクロソフトのAnswer Deskのチャットで質問したところ、

    -------------------
    大変お待たせいたしました。
    お調べしましたところ 参考となる Web ページがございませんでした。
    そこでお客様が解決するためにシステムの運用・管理など IT プロフェッショナルの方々を対象としたフォーラムをご用意しておりますので、ご紹介させていただきます。
    ◆Technet フォーラム
    https://social.technet.microsoft.com/Forums/ja-JP/home
    このフォーラムでは、クライアント OS や、サーバー OS、運用・管理ツール、各種サーバー製品など、
    マイクロソフトの多岐にわたる製品と技術について活発な情報交換が行われていますのでご活用いただければ幸いです。
    -------------------

    と紹介されたというのが一点、また、知りたいことが、ソースの変更よりも、
    Windows側での対処方法があればということでしたが、
    OS単体の話ではなく、Azureサービス/アプリ/Windowsの連携での話だった為、
    ソースを紹介させてもらった方が、環境や、やりたい事がわかりやすいと思ったからです。
    とりあえず、Windows側の設定で、パッとわかるようなミスがある訳ではなさそうだということがわかりましたので、
    MSDNフォーラムで、ソース側のアプローチでの回避方法があるか投稿させていただきたいと思います。

    ※最終的に有償サポート(MSDNインシデント)かなとは思っています。

    • 編集済み しんや 2016年11月15日 6:28
    2016年11月15日 6:27
  • Wi-Fi 側のメトリックを小さく(=優先度を高く)しても解決しなかったと言うことですよね?
    そうなると、ブラックボックス的なところなのでフォーラムで回答を得るのが難しい内容だと思います。

    TechNet か MSDN かで言えば、自作のアプリケーションの話なので MSDN 寄りだとは思います。
    (すでに MSDN フォーラムに移動されています)
    ただし、解決方法はおそらく、ネットワーク環境の設定変更による改善、不具合の回避のためのネットワーク環境の変更、あるいは Windows 側の修正かになるのではないか?と予想していますので、アプリ側の修正での解決は難しいでしょう。

    なお、MSDN インシデントの問い合わせは、既知の情報・公開されている情報の範囲での回答、あるいはバイナリをデバッグして得られた内容にとどまります。
    不具合だと認定されたとしても原因の調査や修正を求めることはできないサポートレベルですのでその点は押さえておいてください。
    (より核心に迫る、あるいは修正をリクエストするならプレミアサポートなどのより上位のサポートが必要。AnswerDesk はコンシューマー向けだと思うので、今回のような技術的な問い合わせにはフォーラムを案内してしまうのでしょうね…)

    2016年11月15日 13:09
    モデレータ
  • コメントありがとうございます。
    とりあえずは、インシデント使ってみようと思います。
    ありがとうございました。
    2016年11月16日 6:08