Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

565
Views
No se puede obtener el parámetro de consulta de HttpRequestData

Estoy actualizando mi código de .NET 3.0 a .NET 5.0, esto cambia bastante la sintaxis. En mi código anterior, que es una compilación de solicitud http en AZURE FUNCTIONS .NET 5.0 aislada, crea una API GET que toma parámetros.

Este es mi código anterior de .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"]; }

Simplemente no puedo encontrar una manera de usar req para obtener un parámetro de la llamada api como se hizo en .NET 3.0 string i = req.Query["i"];

En .NET 5.0 estoy usando

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

¿Alguna pista?

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

En la función de Azure .NET 5.0, usamos HttpRequestData en Http Trigger. La clase no contiene el parámetro Query . Para obtener más detalles, consulte aquí ingrese la descripción de la imagen aquí

Entonces, si desea obtener una cadena de consulta, puede usar el paquete Microsoft.AspNetCore.WebUtilities.QueryHelpers para implementarlo como dijo @user1672994.

Por ejemplo

 var queryDictionary = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(req.Url.Query); var result = queryDictionary["<key name>"];
over 4 years ago · Santiago Trujillo Report

0

Simplemente puede agregar el nombre del parámetro de consulta a la lista de parámetros de la función de la siguiente manera y acceder al valor:

 public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log, string parameter1) { log.LogInformation("C# HTTP trigger function processed a request."); log.LogInformation($"Parameter Value: {parameter1}"); }
over 4 years ago · Santiago Trujillo Report

0

Hay un paquete de sistema que da el mismo resultado. Probablemente por eso se eliminó. Solo usa:

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

Esto da el mismo resultado que req.Query["array_var"];

Disfruta 😉

over 4 years ago · Santiago Trujillo Report

0

Si usa Azure Functions (aislado) con .NET 5.0, puede obtenerlo de FunctionContext.BindingContext.BindingData de esta manera:

 functionContext.BindingContext .BindingData["weatherForecastId"] .ToString();
 [Function("WeatherForecastGet")] public async Task<HttpResponseData> Get([HttpTrigger(AuthorizationLevel.Function, "get", Route = "weather/{weatherForecastId:required}")] HttpRequestData req, FunctionContext executionContext) { string weatherForecastId = executionContext.BindingContext .BindingData["weatherForecastId"] .ToString(); var result = this.doSomething(weatherForecastId); var response = req.CreateResponse(HttpStatusCode.OK); await response.WriteAsJsonAsync(result); return response; }

Como se hizo la pregunta sobre HttpRequestData . El FunctionContext también está disponible en él. Entonces puede lograr los mismos resultados (con más pasos) como este:

 httpRequestData.FunctionContext .BindingContext .BindingData["weatherForecastId"] .ToString();
 [Function("WeatherForecastGet")] public async Task<HttpResponseData> Get([HttpTrigger(AuthorizationLevel.Function, "get", Route = "weather/{weatherForecastId:required}")] HttpRequestData req, FunctionContext executionContext) { string weatherForecastId = req.FunctionContext .BindingContext .BindingData["weatherForecastId"] .ToString(); // some logic }

Esto también funciona con el parámetro tanto en la consulta como en la ruta. Como puede ver, ambos parámetros en la ruta API a continuación se encuentran en BindingData

 /api/weather/12?range=today

depurador

over 4 years ago · Santiago Trujillo Report

0

Esto funciona para mí. Bonito y sencillo. Hay un método para obtener los parámetros de consulta en un diccionario.

 var qp = req.GetQueryParameterDictionary(); var foobar = req["foobar"];
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!