Azure功能路由参数为空

时间:2018-09-11 21:25:32

标签: .net azure routing azure-functions

我有一个像这样的天蓝色函数:

    [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始终填充。有人知道这是怎么回事吗?

2 个答案:

答案 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函数以对其进行调试。

测试结果:

enter image description here

答案 1 :(得分:2)

我认为您错过了一件事情:您已经在字符串WarehouseId中添加了一个属性,而不是HttpRequest请求。