【问题标题】:Azure IotHub, UWP, DeviceClient.OpenAsync - timeoutAzure IotHub、UWP、DeviceClient.OpenAsync - 超时
【发布时间】:2018-07-31 08:44:06
【问题描述】:

我正在尝试使用以下代码将我的 UWP 应用连接到 Azure IotHub。我尝试了一个具有相同代码的控制台应用程序,它可以工作,但不能在 UWP 应用程序上运行。

我已授予 UWP 应用程序的所有权限(互联网,以及之后的所有其他权限)。 尝试使用 HttpClient 获取,并且互联网连接正常

我也尝试使用 UWP 应用的最新目标(Win 10,版本 1803)

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

在 UWP 上,代码在 await device.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);

【问题讨论】:

  • 传输类型需要定义,猜测默认传输类型不适用于UWP。 DeviceClient.CreateFromConnectionString(deviceConnectionString, TransportType.Amqp_WebSocket_Only);

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


【解决方案1】:

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

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

运行时失败(Windows IoT Core 10.0.17723.1000 ) 出现以下错误:

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

所以,解决方法是:

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

在此更改之后,我在 RPi3B 上的测试程序 Blinky 正在运行。

【讨论】:

  • 感谢您提供的信息,但它适用于 1.7.1。当 TransportType 设置为 Amqp_WebSocket_Only
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多