Обновление функции Azure 1.x до 2.x - проблема с GetQueryNameValuePairs - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть функция HTTP Trigger Azure, которая в настоящее время находится в 1.x.Код выглядит следующим образом:

using System.Net;
using System.Threading.Tasks;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");

    // parse query parameter
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    // Get request body
    dynamic data = await req.Content.ReadAsAsync<object>();

    // Set name to query string or body data
    name = name ?? data?.name;

    return name == null
        ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
        : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}

При попытке обновить его до 2.x у меня возникает проблема с GetQueryNameValuePairs

Я получаю ошибку - 'HttpRequestMessage' does not contain a definition for 'GetQueryNameValuePairs'

Нет ли поддержки этого метода в 2.0?Как это можно сделать в стандарте .net?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вот пример кода, который ищет параметры строки запроса в функциях V2.x

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

public static IActionResult Run(HttpRequest req, TraceWriter log)
{
   log.Info("C# HTTP trigger function processed a request.");

   if (req.Query.TryGetValue("name", out StringValues value))
   {
     return new OkObjectResult($"Hello, {value.ToString()}");
   }

   return new BadRequestObjectResult("Please pass a name on the query string");
}
0 голосов
/ 19 октября 2018

В функциях v2 это изменилось на req.GetQueryParameterDictionary ();

0 голосов
/ 29 сентября 2018

Функция времени выполнения 1.x находится на Full .Net Framework, а версия 2.x работает на .NET Core env, а наш код функции нацелен на .NET Standard.

Для этого класса HttpRequestMessage в стандартной сборке .NET отсутствует метод GetQueryNameValuePairs.

Для миграции с 1.x на 2.x обычно требуется работа по модификации кода.Так как это всего лишь шаблон, я предлагаю вам удалить его и заново создать Http Trigger в среде исполнения 2.x.Вы можете увидеть другой шаблон работы с .NET Standard.

...