我有一个像这样的天蓝色函数:
[FunctionName("MaterialsByMaterialNumber")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "MaterialsByMaterialNumber/{warehouseId}/{materialNumber:int}")]
string warehouseId, int materialNumber, HttpRequest req, ILogger log, [Inject(typeof(IQueryService))]QueryService queryService)
{
log.LogInformation("MaterialsByRollId function is processing a request");
IEnumerable<BarcodedMaterial> result = await queryService.GetMaterialsByMaterialNumberAsync(materialNumber, warehouseId);
return result != null ?
(ActionResult)new OkObjectResult(result) :
new BadRequestObjectResult("Something went wrong with this request");
}
在本地,我使用网址http://localhost:7071/api/MaterialsByMaterialNumber/4072B201-C0A1-4955-815E-7D13953C8C0C/9300
在调试器中查看时,我的WarehouseId始终为null,而我的materialNumber始终填充。有人知道这是怎么回事吗?
答案 0 :(得分:2)
我使用以下代码测试了azure函数v1和v2,它在我这方面可以正常工作。有关将参数添加到功能路由的更多信息,我们可以参考此tutorial。
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "test/{warehouseId}/{materialNumber:int}")]HttpRequestMessage req, string warehouseId, int materialNumber, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
return req.CreateResponse(HttpStatusCode.OK, $"warehouseId:{warehouseId},materialNumber:{materialNumber}");
}
我建议您可以仅使用我提到的参数创建一个新的Azure函数,然后将自定义参数逐个添加到Azure函数以对其进行调试。
测试结果:
答案 1 :(得分:2)
我认为您错过了一件事情:您已经在字符串WarehouseId中添加了一个属性,而不是HttpRequest请求。