Azure IotHub,UWP,DeviceClient.OpenAsync-超时

时间:2018-07-31 08:44:06

标签: windows-10-iot-core azure-iot-hub

我正在尝试使用以下代码将UWP应用连接到Azure IotHub。我已经尝试过使用相同代码的控制台应用程序,但是它可以正常工作,但不能在UWP应用程序上使用。

我已将UWP应用的所有权限(互联网以及此后的所有其他权限)授予。 尝试使用HttpClient进行Get操作,并且互联网连接正常

我还尝试过将UWP应用的最新目标(Win 10,版本1803)

要从我的UWP应用连接到IotHub,我正在使用nuget包:Microsoft.Azure.Devices.Client v 1.17.1

在UWP上,代码在等待设备处停止。OpenAsync()并在一段时间后超时

我想念什么吗?

代码:

string deviceConnectionString = "<CONNECTION STRING>";

var device = DeviceClient.CreateFromConnectionString(deviceConnectionString);

await device.OpenAsync();

Message bla = new Message(Encoding.ASCII.GetBytes("blablabla"));

await device.SendEventAsync(bla);

更新-修复

需要定义传输类型,猜测默认传输类型不适用于UWP。创建客户端时,请使用以下命令:

var device = DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Amqp_WebSocket_Only);

2 个答案:

答案 0 :(得分:1)

我刚刚使用您的设置在我的RPi3B上进行了测试

  • 针对目标版本进行了编译:Win 10,版本1803
  • Microsoft.Azure.Devices.Client v1.17.1
  • Microsoft.NETCore.UniversalWindowsPlatform v6.1.7

并且运行时失败(Windows IoT核心版10.0.17723.1000 ),但出现以下错误:

无法加载文件或程序集'System.Net.Security,版本= 4.0.1.2,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'。系统找不到指定的文件。

因此,解决方法是:

  • 使用Microsoft.Azure.Devices.Client 版本v1.6.0

此更改后,我在RPi3B上的测试程序Blinky正常工作。

答案 1 :(得分:1)

最新版本的客户端SDK无法在使用AMQP的UWP上运行。此处有Github issue#421。请跟踪此问题。如Roman Kiss所述,Microsoft.Azure.Devices.Client版本v1.6.0可以正常使用,您可以尝试使用此版本。