Как использовать Azure Fuction из контроллера MVC - PullRequest
1 голос
/ 07 июля 2019

Я создал и опубликовал функцию Azure (HTTP Triggered) для функции поиска.Когда я набираю идентификатор в поле поиска и нажимаю «Поиск», он должен вызвать функцию Azure и получить результат обратно.

Как интегрировать функцию Azure с моим действием контроллера в .NETCore?

1 Ответ

0 голосов
/ 07 июля 2019

Вот пример того, как вы можете вызвать вашу функцию лазури в контроллере.

У меня есть простая функция Azure, которая возвращает имя и адрес электронной почты после его вызова. Давайте посмотрим на приведенный ниже пример:

public class InvokeAzureFunctionController : ApiController
    {
        // GET api/<controller>
        public async System.Threading.Tasks.Task<IEnumerable<object>> GetAsync()
        {
            HttpClient _client = new HttpClient();
            HttpRequestMessage newRequest = new HttpRequestMessage(HttpMethod.Get, "http://localhost:7071/api/FunctionForController");
            HttpResponseMessage response = await _client.SendAsync(newRequest);

            dynamic responseResutls = await response.Content.ReadAsAsync<dynamic>();
            return responseResutls;
        }
    }

Функция тестирования для вызова контроллера:

public static class FunctionForController
    {
        [FunctionName("FunctionForController")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

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

            if (name == null)
            {
                // Get request body
                dynamic data = await req.Content.ReadAsAsync<object>();
                name = data?.name;
            }

            ContactInformation objContact = new ContactInformation();

            objContact.Name = "From Azure Function";
            objContact.Email = "fromazure@function.com";

            return req.CreateResponse(HttpStatusCode.OK, objContact);
        }
    }

Простой класс ContactInformation, который я использовал:

   public class ContactInformation
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }

Тест PostMan:

Я позвонил controller action от почтальона, и он успешно вернул данные из моей локальной функции лазури через local controller action. Смотрите снимок экрана ниже:

enter image description here

Надеюсь, вы понимаете. Просто подключи и играй сейчас.

...