求调用接收APIGatewayHttpApiV2ProxyRequest的AWS Lambda的.NET Framework 4.8示例代码
.NET Framework 4.8调用AWS Lambda函数URL示例代码
首先需要安装Newtonsoft.Json NuGet包,用于处理JSON序列化和反序列化。
步骤1:定义请求/响应模型类
// 匹配Lambda函数的输入请求结构 public class LambdaRequest { public string Body { get; set; } } // 匹配Lambda函数的响应结构 public class LambdaResponse { public int StatusCode { get; set; } public string Body { get; set; } }
步骤2:编写调用逻辑
using System; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; public class LambdaFunctionClient { // 复用HttpClient实例,避免频繁创建导致的Socket资源耗尽 private static readonly HttpClient _httpClient = new HttpClient(); public async Task<string> ExtendLicenseKeyAsync(string inputKey) { const string lambdaFunctionUrl = "https://mi7ark5tunresgw25fdjstovuq0woylg.lambda-url.us-west-1.on.aws/"; // 构造请求体 var requestPayload = new LambdaRequest { Body = inputKey }; var jsonPayload = JsonConvert.SerializeObject(requestPayload); var httpContent = new StringContent(jsonPayload, System.Text.Encoding.UTF8, "application/json"); // 发送POST请求 var httpResponse = await _httpClient.PostAsync(lambdaFunctionUrl, httpContent); // 处理HTTP状态码 if (!httpResponse.IsSuccessStatusCode) { if (httpResponse.StatusCode == System.Net.HttpStatusCode.NotAcceptable) { throw new ArgumentException("输入的Key长度必须为48位"); } // 其他错误直接抛出异常 httpResponse.EnsureSuccessStatusCode(); } // 解析响应内容 var responseJson = await httpResponse.Content.ReadAsStringAsync(); var lambdaResponse = JsonConvert.DeserializeObject<LambdaResponse>(responseJson); // 反序列化Lambda返回的Body(因为Body是序列化后的字符串) return JsonConvert.DeserializeObject<string>(lambdaResponse.Body); } }
步骤3:调用示例
// 在异步方法中执行调用 var client = new LambdaFunctionClient(); try { string inputKey = "Q0FDREJBQUItOEFBQi00QUFFLTlBQUUtNkFBQUFBQWNkM2U5"; string newLicenseKey = await client.ExtendLicenseKeyAsync(inputKey); Console.WriteLine($"生成的新授权Key: {newLicenseKey}"); } catch (Exception ex) { Console.WriteLine($"调用失败: {ex.Message}"); }
关键说明
- HttpClient复用:不要每次调用都创建新的
HttpClient实例,复用实例可以避免Socket资源泄露。 - 错误处理:针对Lambda函数返回的406(NotAcceptable)状态码做了针对性处理,提示输入Key长度不符合要求。
- JSON解析:Lambda函数返回的
Body是序列化后的字符串,因此需要二次反序列化才能得到最终的结果。
内容的提问来源于stack exchange,提问作者T. J. Fan
相关产品推荐
相关产品推荐

