简体   繁体   中英

FromQuery support in Azure Functions v3

I am trying to use [FromQuery] with Azure Function v3 but I am getting the following error:

Cannot bind parameter 'search' to type String.

For the following method:

[FunctionName("GetObjects")]
public ActionResult<IActionResult> QueryObjects(
    [HttpTrigger(AuthorizationLevel.Function, "GET", Route = "objects")]
    HttpRequest req,
    ILogger log,
    [FromQuery] string search = null)
{
    //do some stuff
}

Is [FromQuery] not supported?

Should I use req.Query["search"] to get the query parameter?

From functions.desp.json

Related to binding

"Microsoft.Extensions.Configuration.Binder/3.1.1": {
    "dependencies": {
        "Microsoft.Extensions.Configuration": "3.1.2"
    },
    "runtime": {
        "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {
        "assemblyVersion": "3.1.1.0",
        "fileVersion": "3.100.119.61404"
        }
    }
},

This is what you face now:

在此处输入图片说明

Method signatures developed by the azure function C # class library can include these:

ILogger or TraceWriter for logging (v1 version only)

A CancellationToken parameter for graceful shutdown

Mark input and output bindings by using attribute decoration

Binding expressions parameters to get trigger metadata

From this doc , it seems that it is not supported. You can create your custom binding like this , and dont forget to register it in the startup.

If you want to bind it directly, it's not possible. So you could try to change your route like Function1/name={name}&research={research} then bind it to string parameter.

Below is my test code:

[FunctionName("Function1")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route="Function1/name={name}&research={research}")] HttpRequest req,
    String name,
    String research,
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    log.LogInformation(research);
    
    string responseMessage = $"Hello, {name}. This HTTP triggered function executed successfully.";

    return new OkObjectResult(responseMessage);
}

截屏

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM