如何从另一个模块在物联网边缘代理上调用直接方法?

陪审团

我正在试用1.0.10-rc2中的实验功能。

edgeAgent UploadModuleLogs上有直接方法。

我可以从Azure门户调用该方法,并且效果很好。我正在尝试像这样在同一设备上的模块中调用该方法:

static async Task Init()
{
...

  await ioTHubModuleClient.SetMethodHandlerAsync("UploadModuleLogs", UploadModuleLogs, ioTHubModuleClient);
}

private static async Task<MethodResponse> UploadModuleLogs(MethodRequest methodRequest, object userContext)
{
  ModuleClient ioTHubModuleClient = (ModuleClient)userContext;

  // Upload logs
  Console.WriteLine("Invoking method On edgeAgent");

  var payload = @"{
""schemaVersion"": ""1.0"",
""sasUrl"": ""https://..."",
""items"": [
    {
        ""id"": "".*"", 
        ""filter"": {
            ""tail"": 100
        }
    }
],
""encoding"": ""none"", 
""contentType"": ""text""
} ";

  MethodRequest request = new MethodRequest("UploadModuleLogs", Encoding.UTF8.GetBytes(payload));

  string myModuleId = Environment.GetEnvironmentVariable("IOTEDGE_MODULEID");
  string myDeviceId = Environment.GetEnvironmentVariable("IOTEDGE_DEVICEID");

  Console.WriteLine($"{myDeviceId} {myModuleId} - UploadModuleLogs method request at {DateTime.Now}");
  //Console.WriteLine($"{request.DataAsJson}");

  try
  {
    var response = await ioTHubModuleClient.InvokeMethodAsync(myDeviceId, "$edgeAgent", request).ConfigureAwait(false);
    Console.WriteLine($"Received response with status: {response.Status} with message: {response.ResultAsJson}");

    return response;
  }
  catch (Exception ex)
  {
    Console.WriteLine($"Error invoking method {ex}");
  }

  return null;

尝试运行此:

错误调用方法Microsoft.Azure.Devices.Client.Exceptions.DeviceNotFoundException:设备{“ message”:“找不到客户端myDeviceName / $ edgeAgent”}未在Microsoft.Azure.Devices.Client.Transport.HttpClientHelper.ExecuteAsync(HttpMethod httpMethod ,Uri requestUri,Func 3 modifyRequestMessageAsync, Func23 processResponseMessageAsync, IDictionary成功,Microsoft.Azure.Devices.Client.Transport.HttpClientHelper.PostAsync [T1,T2]中的Func 2 errorMappingOverrides,CancellationToken cancelToken)(Uri requestUri,T1实体,2 errorMappingOverrides, IDictionaryMicrosoft的IDictionary 2 customHeaders,CancellationToken cancelToken) .Azure.Devices.Client.ModuleClient.InvokeMethodAsync(Uri uri,MethodRequest methodRequest,CancellationToken cancelledToken)

文卡特(Venkat Yalla)

这是预期的行为,其他模块无法调用边缘代理的直接方法。边缘代理在设计上不会连接到edgeHub,因为代理的直接方法具有特权,并且需要服务凭据才能访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在覆盖另一个模块的某些方法的模块上调用类方法?

来自分类Dev

如何从另一个模块调用xml布局

来自分类Dev

如何从另一个模块调用函数

来自分类Dev

如何从另一个模块调用活动

来自分类Dev

如何调用在另一个模块/方法中构建的DataFrame?

来自分类Dev

如何从另一个具有主函数的python模块调用单个方法

来自分类Dev

如何在.NET 4 MVC中的另一个控制器上调用方法

来自分类Dev

如何在.net中的另一个程序集中的私有静态类型(或类)上调用方法?

来自分类Dev

在另一个环境上调用capistrano任务

来自分类Dev

如何从另一个类中迅速调用另一个方法?

来自分类Dev

在Aspect中获取目标对象并在目标对象上调用另一个方法

来自分类Dev

在另一个仍然打开的窗体上调用方法?

来自分类Dev

在Aspect中获取目标对象并在目标对象上调用另一个方法

来自分类Dev

直接从另一个CommonJS模块导出

来自分类Dev

如何在另一个活动上调用onclick?

来自分类Dev

如何在另一个网页上调用js函数?

来自分类Dev

如何从另一个类调用@selector方法

来自分类Dev

Flutter:如何从另一个类调用方法?

来自分类Dev

如何从另一个小写的类调用方法?

来自分类Dev

如何从另一个类调用@selector方法

来自分类Dev

如何从另一个类调用get方法?

来自分类Dev

如何从另一个类调用void方法

来自分类Dev

如何从另一个线程调用控制方法

来自分类Dev

如何从另一个类调用 invalidate() 方法?

来自分类Dev

如何从另一个类调用方法?

来自分类Dev

如何从另一个项目调用类的方法

来自分类Dev

如何从另一个片段调用方法

来自分类Dev

如何从另一个类调用HashMap的方法?

来自分类Dev

如何从另一个窗口调用 MainWindow 方法?

Related 相关文章

  1. 1

    如何在覆盖另一个模块的某些方法的模块上调用类方法?

  2. 2

    如何从另一个模块调用xml布局

  3. 3

    如何从另一个模块调用函数

  4. 4

    如何从另一个模块调用活动

  5. 5

    如何调用在另一个模块/方法中构建的DataFrame?

  6. 6

    如何从另一个具有主函数的python模块调用单个方法

  7. 7

    如何在.NET 4 MVC中的另一个控制器上调用方法

  8. 8

    如何在.net中的另一个程序集中的私有静态类型(或类)上调用方法?

  9. 9

    在另一个环境上调用capistrano任务

  10. 10

    如何从另一个类中迅速调用另一个方法?

  11. 11

    在Aspect中获取目标对象并在目标对象上调用另一个方法

  12. 12

    在另一个仍然打开的窗体上调用方法?

  13. 13

    在Aspect中获取目标对象并在目标对象上调用另一个方法

  14. 14

    直接从另一个CommonJS模块导出

  15. 15

    如何在另一个活动上调用onclick?

  16. 16

    如何在另一个网页上调用js函数?

  17. 17

    如何从另一个类调用@selector方法

  18. 18

    Flutter:如何从另一个类调用方法?

  19. 19

    如何从另一个小写的类调用方法?

  20. 20

    如何从另一个类调用@selector方法

  21. 21

    如何从另一个类调用get方法?

  22. 22

    如何从另一个类调用void方法

  23. 23

    如何从另一个线程调用控制方法

  24. 24

    如何从另一个类调用 invalidate() 方法?

  25. 25

    如何从另一个类调用方法?

  26. 26

    如何从另一个项目调用类的方法

  27. 27

    如何从另一个片段调用方法

  28. 28

    如何从另一个类调用HashMap的方法?

  29. 29

    如何从另一个窗口调用 MainWindow 方法?

热门标签

归档