我正在尝试在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控制台网站上传它.
完成上传新软件包后,一切都按预期工作,我不再收到错误.
我遇到了同样的问题,终于找到了解决方案.实际上,错误告诉您的是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控制台网站上传它.
完成上传新软件包后,一切都按预期工作,我不再收到错误.