Azure Function .NET5隔离进程如何从HttpRequestData获取路径参数Id
.NET 5 Isolated 模式 Azure Function 获取路由参数Id的方案
方案1:直接参数绑定(推荐)
直接在Run方法的入参中添加和路由占位符同名的参数,Azure Functions运行时会自动完成参数绑定,无需手动解析,是最简便的实现方式。
示例代码:
[Function("Run")] public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "todo/{id}")] HttpRequestData req, string id, // 与路由占位符{id}同名即可自动绑定 FunctionContext executionContext) { var logger = executionContext.GetLogger("GetTodo"); logger.LogInformation("C# HTTP trigger function processed a request, id: {Id}", id); var response = req.CreateResponse(HttpStatusCode.OK); response.Headers.Add("Content-Type", "text/plain; charset=utf-8"); response.WriteString($"请求的待办ID为:{id}"); return response; }
方案2:从执行上下文手动读取
如果不想修改方法入参结构,可以从FunctionContext的绑定上下文中手动读取路由参数值:
示例代码:
[Function("Run")] public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "todo/{id}")] HttpRequestData req, FunctionContext executionContext) { var logger = executionContext.GetLogger("GetTodo"); logger.LogInformation("C# HTTP trigger function processed a request."); // 手动读取路由参数id var id = executionContext.BindingContext.BindingData["id"]?.ToString(); var response = req.CreateResponse(HttpStatusCode.OK); response.Headers.Add("Content-Type", "text/plain; charset=utf-8"); response.WriteString($"请求的待办ID为:{id}"); return response; }
注意事项
- 参数名称需要和
Route属性中定义的{id}占位符名称保持一致,大小写不敏感。 - 如果id是数值类型,直接将入参定义为
int/long类型即可,运行时会自动完成类型转换,若传入值不符合类型要求会直接返回404错误。
内容的提问来源于stack exchange,提问作者chiaDev
相关产品推荐
相关产品推荐

