Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get query parameter from HttpRequestData

I'm upgrading my code from .NET 3.0 to .NET 5.0, this changes the sintaxis quite a bit. In my previous code, which is a http request build in AZURE FUNCTIONS .NET 5.0 isolate, builds an GET api that takes parameters.

This is my previous code from .NET 3.0

using Microsoft.Azure.WebJobs; 
using Microsoft.Azure.WebJobs.Extensions.Http;


public static async Task<IActionResult> Run(
  [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
  ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    byte[] RSA_Key_to_Correct = new byte[0x80];
    string array_var = req.Query["array_var"];
    string i = req.Query["i"];
    string incrementing_value = req.Query["incrementing_value"];
}

I just cant find a way to use req to grab a parameter from the api call like it was done on .NET 3.0 string i = req.Query["i"];

In .NET 5.0 im using

using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

Any hint?

like image 890
Christopher Martinez Avatar asked Jun 22 '21 16:06

Christopher Martinez


2 Answers

In Azure function .NET 5.0, we use the HttpRequestData in Http Trigger. The class does not contain Query parameter. For more details, please refer to here enter image description here

So if you want to get query string, you can use the package Microsoft.AspNetCore.WebUtilities.QueryHelpers to implement it as @user1672994 said.

For example

var queryDictionary = 
    Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(req.Url.Query);
var result = queryDictionary["<key name>"];
like image 159
Jim Xu Avatar answered Nov 09 '22 16:11

Jim Xu


There is a system package that gives the same result. That is probably why it was removed. Just use:

var query = System.Web.HttpUtility.ParseQueryString(req.Url.Query);
var from = query["key"]

This gives the same result as req.Query["array_var"];

Enjoy 😉

like image 20
Sven Avatar answered Nov 09 '22 15:11

Sven