webapi到IoTHub无法从Azure部署工作

时间:2017-04-21 15:34:35

标签: azure asp.net-web-api azure-iot-hub

是:“Iot Hub诊断azure部署的应用程序”

奇怪的问题。我有一个非常简单的基于4.5.2的webapi应用程序,它充当了一个现场网关;也就是说,每个方法代表消费者连接到IoT Hub,这些实际设备只能发布到HTTP端点。

当我从本地开发机器运行代码时,一切都按预期工作,我的IoT Hub接收数据。所以,然后,我将webapi应用程序发布到azure并运行相同的方法,但根本没有检测到IoT Hub的活动。奇怪的。我甚至在azure中调试应用程序代码,一切正常,没有错误。目前没有任何外部配置可以解决问题,这完全在代码中。

这种行为是否有合理的解释?

我是IoT Hub的新手,所以这可能是一件简单的事情。我在哪里可以打开详细诊断?由于我有相信的代码,我相信在哪里可以看到下一个逻辑信息?是否存在可能阻止数据通过的某种权限?

WebApi方法基本上调用此代码,该代码包含在单独的程序集中

    public static void SendTempData(string Name, string value)
    {
        var telemetryDataPoint = new
        {
            deviceId = HOME_TEMP_DEVICE,
            DeviceName = Name,
            TValue = value
        };

        var messageString = JsonConvert.SerializeObject(telemetryDataPoint);
        var task = Task.Run(() =>
        {
            deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey(HOME_TEMP_DEVICE, HOME_TEMP_DEVICE_KEY), TransportType.Mqtt);

            var message = new Message(Encoding.ASCII.GetBytes(messageString));

            deviceClient.SendEventAsync(message);
        });

        WaitForTask(ref task);

        CheckForFail(task);
    }

    private static void WaitForTask(ref Task task)
    {
        while (task.Status != TaskStatus.RanToCompletion)
        {
            if ((task.IsCanceled) || (task.IsFaulted))
                break;

            System.Diagnostics.Debug.WriteLine("Thread ID: {0}, Status: {1}", Thread.CurrentThread.ManagedThreadId, task.Status);
        }
    }

底线是我没有可见性。是否有一些冗长的设置我可以启用,看看为什么IoTHub永远不会看到连接或数据?

0 个答案:

没有答案