UWPアプリ開発メモ

社内のTCPサーバーと通信するコードを書いたところ、こんなメッセージが表示された。

StreamSocket socket = new StreamSocket();
HostName serverHost = new HostName("xxx.yy.zz.ppp");
CancellationTokenSource cts = new CancellationTokenSource();

try
{
    cts.CancelAfter(3000);
    await socket.ConnectAsync(serverHost, "1234").AsTask(cts.Token);
}
catch (TaskCanceledException ex)
{
    System.Diagnostics.Debug.WriteLine(ex.Message);
}
catch (Exception ex)
{
    System.Diagnostics.Debug.WriteLine(ex.Message);
}

// エラー
アクセスが拒否されました。\r\n\r\nA network capability is required to access this network resource

フォームアプリと違ってUWPアプリでは、LAN内のサーバーに接続する際、アプリで使用する機能を許可する必要があるらしい。 下記を参考に「機能-プライベートネットワーク」を有効にすることで、問題が回避できるようになりました。

stackoverflow.com