Как вызвать функциональное приложение, запускаемое из другого функционального приложения с помощью вызывающей функции app dll и function.json

#c# #asp.net-core-2.0 #azure-function-app

#c# #asp.net-core-2.0 #azure-function-app

Вопрос:

До сих пор я использовал только одну функцию http-триггера Azure. Однако я получил новое требование для вызова одного функционального приложения Azure F1 в другом функциональном приложении Azure F2. Я хочу использовать функциональное приложение F1, используя dll и файл function.json в azure function app F2.

Функция.json из F1:

  {
  "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.24",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "httpTrigger",
      "methods": [
        "get",
        "post"
      ],
      "authLevel": "anonymous",
      "name": "fnRequest"
    }
  ],
  "disabled": false,
  "scriptFile": "**Function F1 dll path**",
  "entryPoint": "FunctionApp1.Function1.Run"
}
 

Функция 2:

 using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using FunctionApp1;

namespace FunctionApp2
{
    public static class Function2
    {
        [FunctionName("Function2")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ExecutionContext executionContext)
        {
            return await Function1.Run(req, executionContext);           
        }
    }
}
 

не мог бы кто-нибудь, пожалуйста, помочь мне с процедурой вызова.

Заранее спасибо !.

Комментарии:

1. не могли бы вы немного объяснить, что вы пытаетесь сделать? Вместо вызова другой функции я бы выполнил код, который функция 2 выполняла бы в функции 1. Другим вариантом было бы поместить сообщение в служебную шину или очередь хранения для получения 2-й функции

2. @ejwill, спасибо за ответ, да, я могу использовать служебную шину или очередь хранения. функциональное приложение F2 — это решение отладчика для функционального приложения F1. итак, я хотел бы вызвать функциональное приложение F1 из функционального приложения F2.

3. Я не понимаю, что вы подразумеваете под решением отладчика. Вы можете запустить свою функцию локально, если хотите ее отладить.

Ответ №1:

Поскольку функции function1 и function2 находятся в разных приложениях, а функция function1 отключена, вам необходимо добавить ссылку на проект FunctionApp1:

введите описание изображения здесь

введите описание изображения здесь

Тогда ваш function2 должен иметь возможность вызывать function1 с помощью Function1.Run(req, executionContext) .

Кстати, обычно мы используем URL-адрес функции для вызова функции Azure вместо представления другого проекта.