【问题标题】:Exception in UWP app on using Microsoft.Azure.Devices.ClientUWP 应用程序中使用 Microsoft.Azure.Devices.Client 时出现异常
【发布时间】:2018-09-10 04:41:37
【问题描述】:

当我尝试在 UWP 应用程序中使用 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-twin-getstarted 中提到的代码时,等待 Client.GetTwinAsync();引发以下异常。 我在两台不同的机器上尝试过但同样的错误,即使调用 OpenAsync 也会导致同样的异常。我正在尝试创建 UWP 应用,以便可以将其部署在 IOT 设备上。

{System.IO.FileNotFoundException: Could not load file or assembly 'System.Net.Security, Version=4.0.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
File name: 'System.Net.Security, Version=4.0.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
at Microsoft.Azure.Devices.Client.DeviceClient.<>c.b__74_2(Task t)
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at AzureIoTSuiteUWPDevice.MainPage.d__34.MoveNext()}

【问题讨论】:

  • 您的 IoT 设备上运行的是什么版本?您选择了哪个版本的 Microsoft.Azure.Devices.Client?
  • 我还没有将它部署到物联网设备上,因为我仍在尝试让它在我的开发机器(Windows 10 1709.16299)上运行。 Microsoft.Azure.Devices.Client 1.7.0 Microsoft.Azure.Devices.Shared 1.5.0 Microsoft.NETCore.UniversalWindowsPlatform 6.0.8
  • 您是否在解决方案中添加了一些其他包?请检查 System.Net.Security4.0.1 是否存在包依赖项。实际上,Microsoft.Azure.Devices.Client 1.7.0 依赖于 System.Net.Security4.3.2。也许您的解决方案中存在一些冲突。
  • 不,这些是我在项目中引用的唯一包。
  • 这里是link 用于复制的简单解决方案。

标签: windows-10-iot-core


【解决方案1】:

我已经下载了您提供的解决方案。该问题将通过在解决方案属性中将目标的最小版本更改为 16299 来解决。可以参考here了解如何选择UWP版本。

最低版本。这会在您的项目文件中设置 TargetPlatformMinVersion 设置。它还确定应用程序包清单中 TargetDeviceFamily@MinVersion 属性的值。您选择的值指定您的项目可以使用的 UWP 平台的最低版本。

此外,您应该在 Capabilities(Package.appxmanifest) 中选择 Private Networks(Client & Server) 以允许您的应用访问 IoT Hub。

privateNetworkClientServer
在 Windows 上,这提供了对家庭或工作网络的访问——该应用程序可以向您的计算机和同一网络上的其他计算机发送信息或从您的计算机和其他计算机发送信息。在 Windows Phone 上,提供与 internetClient 或 internetClientServer 相同的访问权限。

【讨论】:

  • 我们的目标是构建 14393 - 这种设置有解决方案吗?
  • 如果你的目标是14393,你可以尝试将Target ersion和Min version设置为14393。我没有14393开发环境,无法测试,如果测试有错误,请随时告诉我。
  • 这就是我的意思 :) 当我以 14393 为目标时,我得到“System.Net.Security,Version=4.0.1”。错误。
  • @michael-xu-msft 我的最低版本和目标版本是 14393,但错误仍在发生。顺便提一句。即使您部署到 16299(但您的最低版本是 14393),也会发生该错误。
  • @tymtam,当目标是 14393 时,您是否尝试过使用旧版本的 Microsoft.Azure.Devices.Client?
【解决方案2】:

在我的情况下,我不得不将 NuGet 包 Microsoft.Azure.Devices.Client 降级到版本 1.6.0 并且一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 2016-06-26
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多