Vytvoření a spuštění kódu .NET ze standardních pracovních postupů v Azure Logic Apps pomocí Visual Studio Code

Platí pro: Azure Logic Apps (Standard)

Pokud váš scénář integrace vyžaduje vlastní úlohy nebo logiku nad rámec předdefinovaných operací a konektorů v Azure Logic Apps, vytvořte a spusťte kód .NET jako usměrovací funkce ve standardních pracovních postupech. Pracovní postup pak může provádět úlohy, jako je vlastní analýza, ověřování nebo dokonce použití obchodních pravidel. Pomocí této funkce můžete implementovat scénáře, jako jsou například následující úlohy:

  • Přizpůsobení implementace obchodní logiky
  • Přizpůsobte analýzu, která extrahuje informace z příchozí zprávy.
  • Proveďte ověření dat a jednoduché transformace.
  • Proveďte výpočty.
  • Přizpůsobení odchozích zpráv odesílaných do jiného systému, například API.

Tento průvodce ukazuje, jak psát a spouštět vlastní .NET kód přímo ve standardních pracovních postupech pomocí Visual Studio Code. Naučíte se vytvářet, ladit a nasazovat místní funkce pomocí Visual Studio Code, abyste mohli udržovat vlastní orchestraci kódu a pracovních postupů pohromadě, ladit je v jedné relaci a nasazovat je jako jedno řešení.

Poznámka:

Vlastní vložený .NET kód není vhodný pro následující scénáře:

  • Spouštění procesů, které můžou překročit 10 minut.
  • Probíhá pokus o rozsáhlé transformace zpráv a dat.
  • Provádění složitých scénářů dávkování a debat
  • Použití komponent pipeline serveru BizTalk, které implementují streamování.

Další informace najdete v tématu Omezení.

Požadavky

  • Účet Azure a předplatné. Přičte si bezplatný účet Azure.

  • Nejnovější Visual Studio Code s rozšířením Azure Logic Apps (Standard).

    Požadavky najdete v tématu Vytvoření standardních pracovních postupů v Azure Logic Apps s jedním tenantem pomocí Visual Studio Code.

    Rozšíření poskytuje následující možnosti a výhody:

    • Napište svůj vlastní kód vytvořením funkcí, které mají flexibilitu a kontrolu, abyste vyřešili vaše nejnáročnější problémy s integrací.
    • Ladit kód místně v Visual Studio Code Procházejte kód a workflowy během stejné ladicí relace.
    • Nasaďte kód společně s pracovními postupy. Nejsou potřeba žádné jiné plány služeb.
    • Podpora migračních scénářů pro BizTalk Server, abyste mohli hladce přesunout vlastní investice do .NET z místního prostředí do cloudu.
  • Místní složka, která se má použít pro projekt kódu.

Omezení

  • Možnost vlastních funkcí můžete používat jen ve Visual Studio Code spuštěném na Windows. Tato funkce podporuje použití .NET Framework a .NET 8 pro pracovní postupy standardní aplikace logiky nasazené a hostované na Azure.

  • Na portálu Azure nemůžete používat vlastní funkce pro vytváření. Pokud ale chcete pracovat s výstupy z vlastních funkcí v pracovním postupu, postupujte takto:

    1. Po nasazení funkcí do Azure postupujte podle kroků v části Volejte kód z pracovního postupu v portálu Azure.

    2. Přidejte do pracovního postupu integrovanou akci s názvem Volání místní funkce v této aplikaci logiky . Vyberte nasazené vlastní funkce, které chcete, a spusťte kód.

    3. Pomocí následných akcí pracovního postupu můžete odkazovat na výstupy vlastních funkcí, jako můžete v jakémkoli jiném pracovním postupu. Můžete zobrazit historii spuštění integrované akce, vstupy a výstupy.

Obecná omezení najdete v tématu Limits a referenční informace o konfiguraci Azure Logic Apps.

1: Vytvoření projektu kódu

Rozšíření Azure Logic Apps (Standard) pro Visual Studio Code obsahuje šablonu projektu kódu, která poskytuje zjednodušené prostředí pro psaní, ladění a nasazování vlastního kódu pomocí pracovních postupů. Tato šablona projektu vytvoří soubor pracovního prostoru a dva ukázkové projekty: jeden projekt pro napsání kódu a jiného projektu pro vytvoření pracovních postupů.

Poznámka:

Pro kód i pracovní postupy nemůžete použít stejnou složku projektu.

Pokud chcete vytvořit projekt kódu, postupujte takto:

  1. V Visual Studio Code přiřaďte svůj účet Azure.

    Pokud přihlášení trvá déle než obvykle, Visual Studio Code vás vyzve, abyste se přihlásili prostřednictvím webu ověřování Microsoft tím, že vám poskytnete kód zařízení. Pokud se chcete přihlásit pomocí kódu, postupujte takto:

    1. Vyberte Použít kód zařízení a pak vyberte Kopírovat a Otevřít.

    2. Výběrem možnosti Otevřít odkaz otevřete nové okno prohlížeče a pokračujte na ověřovací web.

    3. Na stránce Přihlásit se ke svému účtu zadejte ověřovací kód a vyberte Další.

  2. Na panelu aktivit vyberte ikonu Azure.

  3. V okně Azure přejděte do části Workspace. Přesuňte ukazatel myši na oblast názvu tak, aby se zobrazil panel nástrojů.

  4. V nabídce Azure Logic Apps vyberte Vytvoření nového pracovního prostoru aplikace logiky.

    Screenshot zobrazuje Visual Studio Code s oknem Azure, panelem nástrojů sekce pracovního prostoru a vybranou možností pro vytvoření nového pracovního prostoru logické aplikace.

  5. V okně Vybrat složku přejděte do místní složky projektu, vyberte složku a pak vyberte.

  6. V okně Vytvořit nový pracovní prostor aplikace logiky zadejte pro výzvu k názvu pracovního prostoru název pracovního prostoru a stiskněte Enter.

    Tento příklad se používá weather-app jako název pracovního prostoru:

    Snímek obrazovky s výzvou k zadání názvu pracovního prostoru

    Tento příklad používá weather-project jako název pracovního prostoru.

  7. U výzvy k výběru šablony pro nový projekt vyberte aplikaci logiky s vlastním projektem kódu.

    Snímek obrazovky s výzvou k výběru šablony projektu

  8. U výzvy Vyberte cílovou architekturu vyberte .NET Framework nebo .NET 8.

  9. Postupujte podle následujících výzev a zadejte následující informace:

    Výzva Příklad hodnoty
    Název aplikace logiky weather-logic-app
    Název funkce pro projekt funkcí .NET WeatherForecast
    Namespace pro projekt funkcí .NET Contoso.Enterprise
    Vyberte šablonu pro první pracovní postup projektu:

    - Stavový pracovní postup
    - Bezstavové pracovní postupy
    - Autonomní agent
    - Konverzační agent
    - Prozatím přeskočit
    Stavový pracovní postup
    Název pracovního postupu weather-workflow
  10. Chcete-li vybrat , jak chcete otevřít výzvu k otevření projektu , vyberte Otevřít v aktuálním okně.

    Po dokončení tohoto kroku Visual Studio Code vytvoří pracovní prostor, který obsahuje projekt funkcí .NET a projekt aplikace logiky, například:

    Screenshot zobrazuje vytvořený pracovní prostor s projektem aplikace logiky a projektem funkcí .NET.

    V okně Průzkumníka si všimněte následujících složek ve vašem pracovním prostoru:

    Složka Popis
    < název pracovního prostoru> Obsahuje projekt .NET funkcí i projekt pracovního postupu aplikace logiky.
    < název aplikace logiky> Obsahuje soubory a další artefakty projektu aplikace logiky. Například souborworkflow.json je soubor definice pracovního postupu, kde můžete vytvořit pracovní postup.
    < function-name> Obsahuje soubory a další artefakty projektu funkcí .NET. Například <název funkce>.cs je soubor, ve kterém můžete napsat svůj kód.
  11. Pro Povolit konektory pro Azure pro Logic Apps <logic-app-name> vyberte Použít konektory z Azure.

  12. U výzvy Vyberte předplatné vyberte požadované předplatné Azure.

  13. U výzvy Vybrat skupinu prostředků pro nové prostředky vyberte požadovanou skupinu prostředků nebo vytvořte novou skupinu prostředků.

  14. U výzvy Vyberte umístění pro nové prostředky vyberte oblast Azure pro nasazení.

  15. Pro metodu ověřování Select pro konektory Azure vyberte typ ověřování, který se má použít pro připojení, která potřebují ověřování.

    Typ autentizace Popis
    Spravovaná identita Vyberte identitu spravované služby , pokud chcete pro prostředek aplikace logiky použít identitu přiřazenou systémem nebo přiřazenou uživatelem.

    Prostředky standardní aplikace logiky už mají povolenou identitu přiřazenou systémem. Musíte však nastavit identitu s přístupem k roli na cílovém prostředku a splnit všechny další požadavky.

    Další informace najdete v tématu Přiřazení přístupu na základě role ke spravované identitě.
    Klíče připojení Nastavte přístup k cílovému prostředku pomocí připojovacích řetězců a přístupových klíčů.

Po dokončení těchto kroků pokračujte k další části, abyste mohli vytvořit kód.

2: Napsání kódu

  1. V okně Průzkumníka rozbalte složku projektu funkce a otevřete < soubor název> funkce.cs.

    Tento soubor obsahuje ukázkový kód a konkrétní prvky kódu s hodnotami, které jste zadali dříve.

    V tomto příkladu soubor funkce WeatherForecast.cs obsahuje tyto prvky kódu s ukázkovými hodnotami:

    Element kódu Hodnota
    Název namespace Contoso.Enterprise
    Název třídy WeatherForecast
    Název funkce WeatherForecast
    Parametry funkce zipcode, temperatureScale
    Návratový typ Task
    Komplexní typ Weather

    Následující příklad ukazuje kompletní vzorový kód:

    //------------------------------------------------------------
    // Copyright (c) Microsoft Corporation. All rights reserved.
    //------------------------------------------------------------
    
    namespace Contoso.Enterprise
    {
        using System;
        using System.Collections.Generic;
        using System.Threading.Tasks;
        using Microsoft.Azure.Functions.Extensions.Workflows;
        using Microsoft.Azure.WebJobs;
        using Microsoft.Extensions.Logging;
    
        /// <summary>
        /// Represents the WeatherForecast flow invoked function.
        /// </summary>
        public class WeatherForecast
        {
    
            private readonly ILogger<WeatherForecast> logger;
    
            public WeatherForecast(ILoggerFactory loggerFactory)
            {
                logger = loggerFactory.CreateLogger<WeatherForecast>();
            }
    
            /// <summary>
            /// Executes the logic app workflow.
            /// </summary>
            /// <param name="zipCode">The zip code.</param>
            /// <param name="temperatureScale">The temperature scale (e.g., Celsius or Fahrenheit).</param>
            [FunctionName("WeatherForecast")]
            public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale)
            {
    
                this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale);
    
                // Generate random temperature within a range based on the temperature scale
                Random rnd = new Random();
                var currentTemp = temperatureScale == "Celsius" ? rnd.Next(1, 30) : rnd.Next(40, 90);
                var lowTemp = currentTemp - 10;
                var highTemp = currentTemp + 10;
    
                // Create a Weather object with the temperature information
                var weather = new Weather()
                {
                    ZipCode = zipCode,
                    CurrentWeather = $"The current weather is {currentTemp} {temperatureScale}",
                    DayLow = $"The low for the day is {lowTemp} {temperatureScale}",
                    DayHigh = $"The high for the day is {highTemp} {temperatureScale}"
                };
    
                return Task.FromResult(weather);
            }
    
            /// <summary>
            /// Represents the weather information for WeatherForecast.
            /// </summary>
            public class Weather
            {
                /// <summary>
                /// Gets or sets the zip code.
                /// </summary>
                public int ZipCode { get; set; }
    
                /// <summary>
                /// Gets or sets the current weather.
                /// </summary>
                public string CurrentWeather { get; set; }
    
                /// <summary>
                /// Gets or sets the low temperature for the day.
                /// </summary>
                public string DayLow { get; set; }
    
                /// <summary>
                /// Gets or sets the high temperature for the day.
                /// </summary>
                public string DayHigh { get; set; }
            }
        }
    }
    

    Definice funkce obsahuje výchozí Run metodu, kterou můžete použít k zahájení práce. Tato ukázková metoda Run ukazuje některé funkce dostupné s funkcí vlastních funkcí, jako je předávání různých vstupů a výstupů, včetně složitých typů .NET.

    Soubor <název> funkce.cs obsahuje ILogger také rozhraní, které poskytuje podporu protokolování událostí do prostředku Application Insights. Informace o trasování můžete odesílat do Application Insights a ukládat je pomocí informací o trasování z pracovních postupů, například:

    private readonly ILogger<WeatherForecast> logger;
    
    public WeatherForecast(ILoggerFactory loggerFactory)
    {
        logger = loggerFactory.CreateLogger<WeatherForecast>();
    }
    
    [FunctionName("WeatherForecast")]
    public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale)
    {
    
        this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale);
    
        <...>
    
    }
    
  2. Nahraďte vzorový kód funkce vlastními a upravte výchozí Run metodu pro konkrétní scénáře. Nebo můžete funkci zkopírovat, včetně [FunctionName("<function-name>")] deklarace, a pak ji přejmenovat jedinečným názvem. Přejmenovanou funkci pak můžete upravit tak, aby vyhovovala vašim potřebám.

Tento příklad pokračuje s původním vzorovým kódem za předpokladu, že se nezmění.

3: Kompilace a sestavení kódu

Po napsání kódu ho zkompilujte, abyste měli jistotu, že neexistují žádné chyby sestavení. Projekt funkcí .NET automaticky zahrnuje úlohy sestavení, které kompilují a přidávají váš kód do složky lib\custom v projektu aplikace logiky, kde pracovní postupy hledají vlastní funkce ke spuštění. V závislosti na vaší verzi .NET umístí tyto úlohy soubory do složky lib\custom\net472 nebo lib\custom\net8.

Postupujte takto:

  1. V Visual Studio Code na panelu aktivit vyberte Explorer.

  2. V okně Průzkumníka otevřete místní nabídku pro složku projektu funkcí a vyberte Sestavit projekt funkcí.

    Snímek obrazovky zobrazuje místní nabídku projektu funkcí s vybranou možností 'Sestavit projekt funkcí'.

    Úloha sestavení se spustí pro projekt s funkcemi. Pokud je sestavení úspěšné, zobrazí se v okně Terminálu zpráva o úspěšném sestavení .

  3. Ověřte, že v projektu aplikace logiky existují následující položky:

    • V pracovním prostoru rozbalte následující složky: <your-logic-app>>lib\custom>net472 nebo net8, na základě vaší .NET verze. Ověřte, že podsložka s názvem net472 nebo net8 obsahuje soubory sestavení (DLL) potřebné ke spuštění kódu, včetně souboru s názvem <název> funkce.dll.

    • V pracovním prostoru rozbalte následující složky: <váš logický diagram>>lib\custom><název funkce>. Ověřte, že podsložka s názvem <název funkce> obsahuje soubor function.json, který obsahuje metadata o kódu funkce, který jste napsali. Návrhář pracovního postupu používá tento soubor k určení potřebných vstupů a výstupů při volání kódu.

    Následující příklad ukazuje ukázková vygenerovaná sestavení a další soubory v projektu aplikace logiky:

    Screenshot zobrazuje pracovní prostor aplikace logiky s funkcemi .NET a projekty aplikací logiky. Nově generovaná sestavení a další požadované soubory jsou viditelné.

4: Volání kódu z pracovního postupu

Po potvrzení, že se kód zkompiluje a projekt aplikace logiky obsahuje potřebné soubory ke spuštění kódu, nastavte pracovní postup tak, aby volal váš kód.

  1. V okně Průzkumníka rozbalte <název pracovního prostoru>, <název aplikace logiky> a potom <název pracovního postupu>.

  2. Otevřete místní nabídku pro workflow.json, a vyberte Otevřít návrháře.

    Otevře se návrhář pracovního postupu a zobrazí výchozí pracovní postup s následující aktivační událostí a akcemi:

    Operation Popis
    Spouštěč Předdefinovaný trigger požadavku s názvem Při přijetí požadavku HTTP.
    Action Integrovaná akce s názvem Volání místní funkce v této logické aplikaci.
    Action Předdefinovaná akce Odpovědi s názvem Odpověď , kterou používáte k odpovídání volajícímu, pouze když použijete trigger Požadavku .
  3. V návrháři vyberte akci s názvem Volání místní funkce v této aplikaci logiky.

    Otevře se informační podokno akce, abyste mohli nastavit konfiguraci vlastního volání funkce, například:

    Snímek obrazovky ukazuje výchozí pracovní postup a jeho aktivační událost a akce otevřené v návrháři pracovního postupu.

  4. Zkontrolujte a ověřte, že je hodnota parametru název funkce nastavená na funkci, kterou chcete spustit. Zkontrolujte nebo změňte jakékoli jiné hodnoty parametrů, které vaše funkce používá.

5: Ladění kódu a procesu

  1. Pro každou z následujících služeb Azure Storage spusťte emulátor úložiště Azurite:

    • Azure Blob Service
    • služba fronty Azure
    • Azure Table Service
    1. V nabídce Visual Studio Code View vyberte Command Palette.

    2. Na příkazovém řádku, který se zobrazí, vyberte Azurite: Spusťte službu Blob Service ze seznamu.

    3. V zobrazeném seznamu pracovních adresářů vyberte aplikaci logiky.

    4. Opakujte tento postup pro Azurite: Spustit službu fronty a Azurite: Spustit službu tabulky.

    Pokud budete úspěšní, na hlavním panelu Visual Studio Code v dolní části obrazovky se zobrazí tři spuštěné služby úložiště.

  2. Následujícím postupem připojte ladicí program k projektu aplikace logiky i k projektu .NET funkcí:

    1. V Visual Studio Code na panelu aktivit vyberte Run and Debug (klávesnice: Ctrl+Shift+D).

      Screenshot zobrazuje panel aktivit Visual Studio Code s vybranou možností Spustit a ladit.

    2. V seznamu Spustit a ladit vyberte spustit/ladit aplikaci logiky s místní funkcí (<aplikace >) a pak vyberte Přehrát (zelená šipka).

      Snímek obrazovky ukazuje seznam Spustit a Ladit s možností výběru pro aplikaci logiky Spustit/Ladit s místní funkcí.

      Dojde k následujícím událostem:

      • Otevře se okno terminálu a zobrazí se spuštěný proces ladění.
      • Otevře se okno konzoly ladění a zobrazí se stav ladění.
      • V dolní části Visual Studio Code se hlavní panel změní na oranžovou, což znamená, že se načte ladicí program .NET.
  3. Pokud chcete nastavit zarážky, najděte v definici funkce (<název> funkce.cs) nebo definici pracovního postupu (workflow.json), najděte číslo řádku, kde chcete zarážku, a vyberte sousední sloupec, například:

    Snímek obrazovky ukazuje soubor kódu otevřené funkce se zarážkou nastavenou pro řádek v kódu.

  4. Pokud chcete trigger požadavku spustit ručně ve vašem pracovním postupu, otevřete stránku Přehled pracovního postupu:

    1. Ve vašem projektu logické aplikace nejprve otevřete kontextovou nabídku souboru workflow.json a pak vyberte Přehled.

      Na stránce Přehled pracovního postupu je tlačítko Spustit trigger k dispozici, pokud chcete pracovní postup spustit ručně. V části Vlastnosti pracovního postupu je hodnota Callback URL adresou URL pro volatelný koncový bod vytvořený triggerem požadavku ve vašem pracovním postupu. Na tuto adresu URL můžete odesílat požadavky, které aktivují pracovní postup z jiných aplikací, včetně dalších pracovních postupů aplikace logiky.

    2. Na panelu nástrojů na stránce Přehled vyberte Spustit spouštěč.

      Screenshot zobrazuje Visual Studio Code a otevřenou stránku Přehled pracovního postupu.

      Jakmile se pracovní postup spustí, ladicí program aktivuje první bod přerušení.

    3. V nabídce Spustit nebo panelu nástrojů ladicího programu vyberte ladicí akci.

    Po dokončení pracovního postupu se na stránce Přehled zobrazí dokončené spuštění a základní podrobnosti o tomto spuštění.

  5. Pokud chcete zkontrolovat informace o běhu pracovního postupu, vyberte ukončený běh. Nebo v seznamu vedle sloupce Doba trvání vyberte Zobrazit spuštění.

    Screenshot zobrazuje Visual Studio Code a dokončený běh pracovního postupu.

6: Nasazení kódu

Nasaďte vlastní funkce stejným způsobem, jakým nasazujete projekt aplikace logiky. Bez ohledu na to, jestli nasazujete z Visual Studio Code nebo používáte proces CI/CD DevOps, ujistěte se, že před nasazením sestavíte kód. Před nasazením také zajistěte, aby všechna závislá sestavení existovala v následující složce projektu aplikace logiky:

  • .NET 4.7.2: složka lib/custom/net472

  • .NET 8: složka lib/custom/net8

Další informace naleznete v tématu Nasazení standardních pracovních postupů z Visual Studio Code do Azure.

Injekce závislostí

Když zvolíte .NET 8, vlastní kód .NET ve standardních pracovních postupech podporuje vkládání závislostí (DI). Tato funkce umožňuje registrovat služby jednou, díky čemuž jsou automaticky dostupné vašim vlastním funkcím kódu za běhu, a ne vytvářet závislosti uvnitř jednotlivých funkcí.

Poznámka:

Podporu injektování závislostí poskytují pouze vlastní projekty kódu .NET 8 ve Visual Studio Code.

Bez vkládání závislostí často vlastní funkce kódu:

  • Vytvořte instance služby přímo ve funkci.
  • Duplicitní logika napříč několika funkcemi nebo pracovními postupy
  • Obchodní logiku můžete kombinovat s nastavením a konfiguračním kódem.

S růstem pracovních postupů se vlastní kód stává obtížnější testovat, opakovaně používat a udržovat. Pomocí injekce závislostí můžete:

  • Oddělte obchodní logiku od provádění pracovního postupu.
  • Opakovaně používejte sdílené služby napříč několika funkcemi vlastního kódu.
  • Zarovnejte vlastní kód podle standardních vzorů vývoje .NET.

Vlastní kód se stává lépe spravovatelný v produkčních pracovních postupech, zejména pokud více pracovních postupů spoléhá na stejnou logiku.

Kdy použít injektáž závislostí

Pokud máte jednoduché nebo jednorázové funkce vlastního kódu, pravděpodobně nepotřebujete injektáž závislostí. Pokud má ale váš vlastní kód následující požadavky, budete možná muset použít injektáž závislostí:

  • Několik pracovních postupů používá nebo sdílí stejné vlastní funkce kódu.
  • Funkce vlastního kódu obsahují obchodní logiku nebo logiku směrování, která se mění v průběhu času.
  • Požadujete lepší testovatelnost nebo dlouhodobou udržovatelnost.

Vliv injektáže závislostí na vlastní funkce .NET

Injektování závislostí nemění způsob volání vlastních funkcí .NET ani průběh pracovního postupu. Tato funkce změní pouze základní strukturu vlastního kódu, ale vytvoří stejný výsledek. Tento proces popisuje následující kroky:

  1. Azure Logic Apps načte váš projekt vlastního kódu.
  2. Azure Logic Apps vytváří instance, registruje a vkládá požadované služby do funkce.
  3. Funkce se spustí pomocí vložených závislostí.

Povolit injektování závislostí

Pokud chcete použít dependency injection s vlastním kódem .NET, splňte následující požadavky:

  1. Při vytváření vlastního projektu kódu vyberte .NET 8.

    Podporu pro injekci závislostí mají pouze projekty s vlastním kódem v .NET 8.

  2. V projektu přidejte StartupConfiguration třídu, která definuje seznam závislostí. Implementujte IConfigureStartup rozhraní a zaregistrujte vaše závislosti pomocí IServiceCollection, například:

    using Microsoft.Azure.Functions.Extensions.Workflows;
    using Microsoft.Extensions.DependencyInjection;
    
    public class StartupConfiguration : IConfigureStartup
    {
        /// <summary>
        /// Configures services for the custom code function to use.
        /// </summary>
        /// <param name="services">The service collection to configure.</param>
        public void Configure(IServiceCollection services)
        {
            // Register the routing service with dependency injection
            services.AddSingleton<IRoutingService, OrderRoutingService>();
            services.AddSingleton<IDiscountService, DiscountService>();
        }
    }
    

    Rozhraní IConfigureStartup je definováno v Microsoft.Extensions.DependencyInjection. Další informace najdete v tématu StartupConfiguration.cs

  3. V konstruktoru třídy vlastní funkce kódu inicializujete registrované služby tak, že je definujete jako parametry konstruktoru, nikoli je vytvoříte uvnitř funkce, například:

    public class MySampleFunction
    {
        private readonly ILogger<MySampleFunction> logger;
        private readonly IRoutingService routingService;
        private readonly IDiscountService discountService;
    
        public MySampleFunction(ILoggerFactory loggerFactory, IRoutingService routingService, IDiscountService discountService)
        {
            this.logger = loggerFactory.CreateLogger<MySampleFunction>();
            this.routingService = routingService;
            this.discountService = discountService;
        }
    
        // Add your function logic here
    
    } 
    

Kromě sestavování a nasazování vlastního projektu kódu nemusíte provádět žádné další kroky, upravovat pracovní postup ani provádět jakékoli jiné změny nastavení v Azure Logic Apps, abyste umožnili injektáž závislostí.

Další informace najdete v ukázce dependency injection pro vlastní kód.

Používání vlastních balíčků NuGet

U vlastních projektů kódu založených na NuGetu, které používají .NET 8, můžete zahrnout a spravovat vlastní balíčky NuGet, aniž byste museli řešit konflikty se závislostmi používanými jazykovým pracovním hostitelem. Stačí přímo přidat závislosti sestavení do samostatného umístění sestavení v projektu. S následujícími výjimkami můžete použít libovolné .NET 8-kompatibilní verze sestavení, které váš projekt potřebuje.

  • Microsoft.Extensions.Logging.Abstractions
  • Microsoft.Extensions.DependencyInjection.Abstractions
  • Microsoft.Azure.Functions.Extensions.Workflows.Abstractions

Řešte problémy

Chyba v podokně informací o akci

Když v návrháři pracovního postupu vyberete integrovanou akci s názvem Volání místní funkce v této aplikaci logiky, zobrazí se v informačním podokně akce následující zpráva:

Failed to retrieve dynamic inputs. Error details:

V tomto scénáři zkontrolujte projekt aplikace logiky a zkontrolujte, jestli je logicApp\lib\custom složka prázdná. Pokud je prázdná, v nabídce Terminál vyberte Spustit úlohu a poté >.

Aktuálně není spuštěn žádný proces se zadaným názvem.

Pokud se při spuštění pracovního postupu zobrazí tato chybová zpráva, pravděpodobně jste proces ladicího programu připojili k .NET Functions, a ne k aplikaci logiky.

Pokud chcete tento problém vyřešit, vyberte v seznamu Spustit a ladit možnost Připojit k aplikaci logiky (LogicApp) a pak vyberte Přehrát (zelený trojúhelník).

Balíček se neimportoval správně

Pokud se v okně Výstup zobrazí chyba podobná následující zprávě, ujistěte se, že máte nainstalovanou alespoň .NET 6.0. Pokud máte tuto verzi nainstalovanou, zkuste ji odinstalovat a znovu nainstalovat.

C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.targets(83,5): warning : The ExtensionsMetadataGenerator package was not imported correctly. Are you missing 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] WeatherForecast -> C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\\bin\Debug\net472\WeatherForecast.dll C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : It was not possible to find any compatible framework version [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The specified framework 'Microsoft.NETCore.App', version '6.0.0' was not found. [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : - Check application dependencies and target a framework version installed at: [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj]

Selhání sestavení

Pokud vaše funkce neobsahuje proměnné a sestavíte kód, může se v okně Výstup zobrazit následující chybové zprávy:

C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]

Build FAILED.

C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]

0 Warning(s)
2 Error(s)

Pokud chcete tento problém vyřešit, přidejte v metodě kódu Run následující parametr:

string parameter1 = null

Následující příklad ukazuje, jak vypadá podpis metody Run:

public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)

Vytvoření pracovních postupů standardní aplikace logiky pomocí Visual Studio Code