当前位置:  开发笔记 > 编程语言 > 正文

aws lambda c#http/s请求

如何解决《awslambdac#http/s请求》经验,为你挑选了1个好方法。

我正在尝试在aws lambda(C#)下执行http/s请求.

System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
System.Net.Http.HttpResponseMessage response = await client.GetAsync("URL");
string responseText = response.ToString();

我收到以下错误代码.如果我手动添加DLL它仍然无法正常工作.

无法加载DLL'iplpapi.dll':找不到指定的模块.

可以在aws下做一个请求吗?

我的东西:

Msvc 15

Amazon Lambda Core,Amazon Lambda Tools,Amazon Lambda Serialization Json

netcore 1.0

Joe Brinkman.. 5

我遇到了同样的问题,终于找到了解决方案.实际上,错误告诉您的是Lambda执行环境中不存在iphlpapi.dll程序集.这是从HttpClient调用以处理实际TCPIP请求的系统级程序集.在研究此问题时,我发现AWS Lambda在AWS Linux AMI环境中运行.显然,Windows系统组件将不可用.

潜入.Net核心,能够针对特定环境定位运行时环境并构建.Net核心.这只是从nuget中提取正确的系统级依赖关系所需要的.

解决方案是在我的project.json中添加一个运行时节点,其中包含一个linux目标..Net没有专门针对AWS Linux AMI的目标,因此我只使用了Ubuntu.14.04-64目标,这似乎有效.

"runtimes": {
    "ubuntu.14.04-x64": {},
    "win10-x64": {}
}

绕过的另一个障碍是VS似乎不允许我为ubuntu运行时编译,所以我不得不放弃命令行并使用DotNet CLI.导航到项目目录并发出以下命令:

dotnet restore dotnet publish -c release -r ubuntu.14.04-x64

这将获得Ubuntu的所有适当的nuget依赖项,然后为ubuntu构建项目.所有程序集都将放在/bin/release/netcoreapp1.0/ubuntu.14.04-x64/publish目录中.只需压缩这些文件,然后您就可以将此包上传到Lambda函数.

注意:我无法使用AWS工具包功能窗口上传我的文件,因此我不得不求助于从AWS控制台网站上传它.

完成上传新软件包后,一切都按预期工作,我不再收到错误.



1> Joe Brinkman..:

我遇到了同样的问题,终于找到了解决方案.实际上,错误告诉您的是Lambda执行环境中不存在iphlpapi.dll程序集.这是从HttpClient调用以处理实际TCPIP请求的系统级程序集.在研究此问题时,我发现AWS Lambda在AWS Linux AMI环境中运行.显然,Windows系统组件将不可用.

潜入.Net核心,能够针对特定环境定位运行时环境并构建.Net核心.这只是从nuget中提取正确的系统级依赖关系所需要的.

解决方案是在我的project.json中添加一个运行时节点,其中包含一个linux目标..Net没有专门针对AWS Linux AMI的目标,因此我只使用了Ubuntu.14.04-64目标,这似乎有效.

"runtimes": {
    "ubuntu.14.04-x64": {},
    "win10-x64": {}
}

绕过的另一个障碍是VS似乎不允许我为ubuntu运行时编译,所以我不得不放弃命令行并使用DotNet CLI.导航到项目目录并发出以下命令:

dotnet restore dotnet publish -c release -r ubuntu.14.04-x64

这将获得Ubuntu的所有适当的nuget依赖项,然后为ubuntu构建项目.所有程序集都将放在/bin/release/netcoreapp1.0/ubuntu.14.04-x64/publish目录中.只需压缩这些文件,然后您就可以将此包上传到Lambda函数.

注意:我无法使用AWS工具包功能窗口上传我的文件,因此我不得不求助于从AWS控制台网站上传它.

完成上传新软件包后,一切都按预期工作,我不再收到错误.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有