Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Logic Apps (Standard)
Ha az integrációs munkafolyamatodnak logikára van szüksége a beépített műveleteken és előre összeszerelt csatlakozókon túl, hozz létre egy helyi függvényt , ahol a kód a logikai alkalmazás megoldásához specifikus marad. Ez a helyi függvény egyedi .NET kód, amelyet ugyanabban az Azure Logic Apps Standard projektben írsz, futtatsz, debugálsz és telepítel, mint a hívói munkafolyamatok. Ha a funkciót helyben tartjuk, fejlesztheted, biztonságossá teheted, telepítheted, skálázhatod és üzemeltetheted a munkafolyamatot és annak egyedi kódját egyetlen alkalmazásként.
A helyi függvények segítik a munkafolyamatokat olyan feladatok elvégzésében, mint például:
- Egyedi üzleti logikát és számításokat valósíts meg.
- Elemezze a saját vagy összetett bejövő üzeneteket.
- Validálni, gazdagítani vagy egyszerű átalakításokat végezni az adatokon.
- Formázza a kimenő üzeneteket API-hoz, csatlakozóhoz vagy partnerrendszerhez.
- Használjuk újra a megfelelő .NET segítő logikát meglévő integrációs megoldásokból, beleértve a BizTalk Server migrációs helyzeteket is.
Helyi rendezvényekkel a következő célokat érheted el:
| Goal | Képesség |
|---|---|
| Fejlessz és hibakeress egy megoldást | Hozd létre a munkafolyamatot és a helyi függvényt ugyanabban a Visual Studio Code-munkatérben, és egyetlen hibakeresési munkamenetben lépj végig mindkettőn. |
| Együtt telepítsük | Építse és telepítse a helyi funkciót a hívó munkafolyamatai mellett anélkül, hogy külön szolgáltatási tervet biztosítana. |
| Csökkentsék a szolgáltatási határokat | Kerüld el a külön Function alkalmazást, HTTP végpontot, hitelesítési folyamatot és hálózati ugrást a munkafolyamat-specifikus kódhoz. |
| Kombináld az alacsony kódos és a pro-kód eszközöket | Használj csatlakozókat és munkafolyamat-orkrábrációt az integrációs folyamathoz. Helyi függvényeket használj speciális .NET logikához. |
Egy helyi függvény eltér egy külön funkcióalkalmazásban található Azure Functions-ban található függvénytől. Az Azure Functions akkor működik a legjobban, ha a kódodnak független végpontot kell kitárnia, alkalmazások között kell megosztani, saját telepítési és verziókezelési életciklusát követnie, vagy függetlenül skáláznia kell. Ha a kódodnak egy adott Azure Logic Apps Standard megoldáson belül kell működnie, és meg kell osztania az alkalmazás életciklusát a hívó munkafolyamataival, használj egy helyi funkciót.
Ez az útmutató bemutatja, hogyan lehet létrehozni, építeni, hívni, hibakeresést és telepíteni helyi .NET funkciókat Standard munkafolyamatokhoz a Visual Studio Code használatával.
Megjegyzés
A helyi függvények nem alkalmasak az alábbi helyzetekre:
- Olyan folyamatokat futtat, amelyek túlléphetik a 10 percet.
- BizTalk Server pipeline komponenseinek alkalmazása, amelyek streaminget valósítanak meg.
További információ: Korlátozások.
Előfeltételek
Egy Azure fiók és előfizetés. Ingyenes Azure fiók létrehozása.
A legújabb Visual Studio Code az Azure Logic Apps (Standard) bővítménnyel.
Az előfeltételekről lásd a Standard munkafolyamatok létrehozása egybérlős Azure Logic Apps alkalmazásban a Visual Studio Code részben.
A bővítmény a következő képességeket és előnyöket biztosítja:
- Saját kód megírásához olyan függvényeket hozhat létre, amelyek rugalmasságával és vezérlésével megoldhatja a legnagyobb kihívást jelentő integrációs problémákat.
- A Visual Studio Code-ban helyileg hajtsa végre a hibakeresést. Haladjon végig a kódon és a munkafolyamatokon ugyanabban a hibakeresési munkamenetben.
- A kódot telepítse a munkafolyamatok mellett. Nincs szükség más szolgáltatási csomagokra.
- Az BizTalk Server migrálási forgatókönyvek támogatása az egyéni .NET beruházások helyszíni környezetből a felhőbe való áthelyezéséhez.
A kódprojekthez használandó helyi mappa.
Korlátozások
Helyi függvényeket csak a Visual Studio Code-ban lehet létrehozni, amely Windows-on fut. Ez a képesség támogatja a .NET Framework-et és a .NET 8-at a Standard munkamunka-csatornákhoz, amelyeket a Workflow Service Plan, App Service Environment v3 (ASE v3) vagy Hybrid rendszeren üzemeltetnek.
Az Azure Portálon nem használhat egyéni függvények készítését. Ha azonban egyéni függvények kimeneteivel szeretne dolgozni a munkafolyamatban, kövesse az alábbi lépéseket:
Miután üzembe helyezte a függvényeket az Azure-on, kövesse a Kód meghívása egy munkafolyamatból lépéseit az Azure portálon.
Adja hozzá a logikai alkalmazás Helyi függvény meghívása nevű beépített műveletét a munkafolyamathoz. Válassza ki a kívánt üzembe helyezett egyéni függvényeket, és futtassa a kódot.
A következő munkafolyamat-műveletek használatával hivatkozhat az egyéni függvény kimenetére, ahogyan bármely más munkafolyamatban is. Megtekintheti a beépített művelet futtatási előzményeit, bemeneteit és kimeneteit.
Általános korlátozásokért tekintse meg a Limits és az Azure Logic Apps konfigurációs referenciáját.
1: Kódprojekt létrehozása
A Visual Studio Code Azure Logic Apps (Standard) bővítménye tartalmaz egy kódprojektsablont, amely leegyszerűsíti a saját kód írását, hibakeresését és üzembe helyezését a munkafolyamatokkal. Ez a projektsablon létrehoz egy munkaterületfájlt és két mintaprojektet: egy projektet a kód megírásához és egy másik projektet a munkafolyamatok létrehozásához.
Megjegyzés
Nem használhatja ugyanazt a projektmappát a kódhoz és a munkafolyamatokhoz.
Kódprojekt létrehozásához kövesse az alábbi lépéseket:
Visual Studio Code jelentkezzen be az Azure fiókjába.
Ha a bejelentkezés a szokásosnál tovább tart, Visual Studio Code egy eszközkód megadásával kéri, hogy jelentkezzen be egy Microsoft hitelesítési webhelyen keresztül. Ha inkább a kód használatával szeretne bejelentkezni, kövesse az alábbi lépéseket:
Válassza az Eszközkód használata, majd a Másolás és megnyitás lehetőséget.
A Hivatkozás megnyitása gombra kattintva nyisson meg egy új böngészőablakot, és lépjen tovább a hitelesítési webhelyre.
A fióklapra való bejelentkezéskor adja meg a hitelesítési kódot, és válassza a Tovább gombot.
A tevékenységsávon válassza a Azure ikont.
A Azure ablakban nyissa meg a Munkatér szakaszt. Vigye az egérmutatót a címterület fölé, hogy megjelenjen az eszköztár.
A Azure Logic Apps menüben válassza Új logikai alkalmazás munkaterületének létrehozása.
A Mappa kijelölése ablakban tallózással keresse meg a helyi projektmappát, jelölje ki a mappát, majd válassza ki a kívánt mappát.
Az Új logikai alkalmazás munkaterület létrehozása ablakban adja meg a munkaterület nevét , majd nyomja le az Enter billentyűt.
Ez a példa a munkaterület neveként szolgál
weather-app:
A Select a template for your new project prompt (Sablon kiválasztása az új projekthez) beállításnál válassza az egyéni kódprojekttel rendelkező Logikai alkalmazás lehetőséget.
A A cél-keretrendszer kijelölése kérdésnél válassza a .NET Keretrendszer vagy .NET 8 lehetőséget.
A következő utasításokat követve adja meg a következő információkat:
Haladéktalan Példaérték Logikai alkalmazás neve weather-logic-appFüggvény neve a .NET függvényprojekthez WeatherForecastNamespace a .NET függvényprojekthez Contoso.EnterpriseVálasszon egy sablont a projekt első munkafolyamatához:
- Állapotalapú munkafolyamat
- Állapot nélküli munkafolyamat
- Autonóm ügynök
- Beszélgetési ügynök
- Ugrás egyelőreÁllapotalapú munkafolyamat Munkafolyamat neve weather-workflowA Select how you to open your project prompt (Válassza ki, hogyan szeretné megnyitni a projekt parancssorát ) beállításnál válassza a Megnyitás az aktuális ablakban lehetőséget.
A lépés befejezése után Visual Studio Code létrehozza a munkaterületet, amely alapértelmezés szerint egy .NET függvényprojektet és egy logikai alkalmazásprojektet is tartalmaz, például:
Az Explorer ablakban jegyezze fel a munkaterület alábbi mappáit:
Mappa Leírás < munkaterület neve> A .NET függvényprojektet és a logikai alkalmazás munkafolyamat-projektét is tartalmazza. < logic-app-name> A logikai alkalmazásprojekt fájljait és egyéb összetevőit tartalmazza. A workflow.json fájl például az a munkafolyamat-definíciós fájl, amelyben létrehozhatja a munkafolyamatot. < függvény neve> A .NET függvényprojekt fájljait és egyéb összetevőit tartalmazza. például a <function-name>.cs fájl az a kód fájl, ahol megírhatja a kódját. Az Azure Logic Apps Enable connectors for <logic-app-name> parancssorában válassza az Azure összekötők használata-t.
A Select előfizetés kérdésnél válassza ki a kívánt Azure előfizetést.
A Select a resource group for new resources prompt (Erőforráscsoport kiválasztása új erőforrásokhoz) kérdésnél válassza ki a kívánt erőforráscsoportot, vagy hozzon létre új erőforráscsoportot.
A Hely kijelölése új erőforrásokhoz kérdésnél válassza ki az üzembe helyezéshez Azure régiót.
A Azure összekötőkhöz válassza ki a hitelesítési módszert, válassza ki a hitelesítési típust a hitelesítést igénylő kapcsolatokhoz.
Hitelesítési típus Leírás Felügyelt identitás Válassza a Felügyeltszolgáltatás-identitás lehetőséget a rendszer által hozzárendelt vagy felhasználó által hozzárendelt identitás használatához a logikai alkalmazás erőforrásán.
Alapértelmezés szerint a standard logikai alkalmazás erőforrásai már engedélyezve vannak a rendszer által hozzárendelt identitással. Azonban be kell állítania az identitást a célerőforráson szerepkör-alapú hozzáféréssel, valamint teljesítenie kell minden egyéb követelményt.
További információ: Szerepköralapú hozzáférés hozzárendelése felügyelt identitáshoz.Kapcsolati kulcsok A célerőforráshoz való hozzáférés beállítása kapcsolati sztringek és hozzáférési kulcsok használatával.
A lépések elvégzése után folytassa a következő szakaszban, hogy meg tudja adni a kódot.
2: A kód írása
Az Explorer ablakban bontsa ki a függvényprojekt mappát, és nyissa meg a <függvénynév>.cs fájlt.
Ez a fájl mintakódot és konkrét kódelemeket tartalmaz a korábban megadott értékekkel.
Ebben a példában a WeatherForecast.cs függvényfájl az alábbi kódelemeket tartalmazza példaértékekkel:
Kód elem Érték Névtér neve Contoso.EnterpriseOsztály neve WeatherForecastFüggvénynév WeatherForecastFüggvényparaméterek zipCode,temperatureScaleVisszatérési típus Task<Weather>Összetett típus WeatherAz alábbi példa a teljes mintakódot mutatja be:
//------------------------------------------------------------ // 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; } } } }A függvénydefiníció egy alapértelmezett
Runmetódust tartalmaz, amelyet az első lépésekhez használhat. Ez a mintaRunmetódus bemutatja az egyéni függvények funkcióval elérhető néhány képességet, például különböző bemenetek és kimenetek átadását, beleértve az összetett .NET típusokat.A <függvénynév>.cs fájl tartalmazza azt a felületet is, amely támogatja az
ILoggerEsemények naplózását egy Application Insights-erőforrásba. Nyomkövetési információkat küldhet az Application Insightsnak, és ezeket az információkat a munkafolyamatok nyomkövetési információival együtt tárolhatja, például: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); <...> }Cserélje le a mintafüggvénykódot a sajátra, és szerkessze az adott forgatókönyvek alapértelmezett
Runmetódusát. Másolhatja a függvényt, beleértve a[FunctionName("<function-name>")]deklarációt is, majd átnevezheti a függvényt egyedi névvel. Ezután szerkesztheti az átnevezett függvényt az igényeinek megfelelően.
Ez a példa az eredeti mintakóddal folytatódik, ha nincs változás.
3: A kód fordítása és létrehozása
Miután befejezted a kód megírását, fordítsd le, hogy megbizonyosodj arról, hogy nincs fordítási hiba. A .NET functions projekted automatikusan tartalmaz olyan építési feladatokat, amelyek lefordítják és hozzáadják a kódodat a logikaalkalmazási projekt lib\custom mappájába. A munkafolyamatok egyedi funkciókat keresnek ebben a mappában. A .NET verziójától függően ezek a feladatok a szerelvényeket a lib\custom\net472 vagy lib\custom\net8 mappába helyezik.
Kövesse az alábbi lépéseket:
A Visual Studio Code tevékenységsávján válassza a Explorer lehetőséget.
Az Explorer ablakban nyissa meg a Functions-projekt mappa helyi menüjét, és válassza a Függvények létrehozása projektet.
A build feladat fut a függvényprojekthez. Ha a build sikeres, a terminálablakban megjelenik egy sikeres buildelési üzenet.
Győződjön meg arról, hogy a következő elemek szerepelnek a logikai alkalmazás projektjében:
A munkaterületen bontsa ki a következő mappákat: <your-logic-app>>lib\custom>net472 vagy net8, .NET verzió alapján. Győződjön meg róla, hogy a net472 vagy net8 almappa tartalmazza a kód futtatásához szükséges assembly (DLL) fájlokat, beleértve egy function-name><.dllnevű fájlt is.
A munkaterületen bontsa ki a következő mappákat: <a logikai alkalmazás>>lib\custom><függvény-neve>. Erősítse meg, hogy a<függvénynév> almappában van egyfunction.json fájl, amely tartalmazza a megírt függvénykód metaadatait. A munkafolyamat-tervező ezzel a fájllal határozza meg a kód meghívásakor szükséges bemeneteket és kimeneteket.
Az alábbi példa a logikai alkalmazás projektjében létrehozott mintaszerelvényeket és más fájlokat mutatja be:
4: Kód meghívása munkafolyamatból
Miután meggyőződett arról, hogy a kód lefordítva van, és a logikai alkalmazás projektje tartalmazza a kód futtatásához szükséges fájlokat, állítsa be a munkafolyamatot a kód meghívására.
Az Explorer ablakban bontsa ki < a munkaterület nevét>, <a logikai alkalmazás nevét>, majd a <munkafolyamat nevét>.
Nyissa meg a workflow.json helyi menüjét, és válassza a Tervező megnyitása lehetőséget.
A munkafolyamat-tervező megnyitja és megjeleníti az alapértelmezett munkafolyamatot az alábbi eseményindítóval és műveletekkel:
Operation Leírás Kiváltó A HTTP-kérés fogadásakor elnevezett beépített kérelem-eseményindító. Action A logikai alkalmazás Helyi függvény meghívása nevű beépített művelete. Action A Válasz nevű beépített válaszművelet, amellyel csak a Kérés eseményindító használatakor válaszolhat a hívónak. A tervezőn válassza a Helyi függvény meghívása nevű műveletet ebben a logikai alkalmazásban.
Megnyílik a művelet információs panelje, hogy beállíthassa az egyéni függvényhívást, például:
Ellenőrizze és ellenőrizze, hogy a függvénynév paraméter értéke a futtatni kívánt függvényre van-e beállítva. Tekintse át vagy módosítsa a függvény által használt egyéb paraméterértékeket.
5: A kód és a munkafolyamat hibakeresése
Az alábbi Azure Storage szolgáltatások mindegyikéhez indítsa el az Azurite Storage Emulatort:
- Azure Blob Service
- Azure üzenetsor-szolgáltatás
- Microsoft Azure Táblaszolgáltatás
A Visual Studio Code View menüben válassza a aCommand Palette lehetőséget.
A megjelenő parancssorban válassza az Azurite: Blob Service indítása lehetőséget a listából.
A megjelenő munkakönyvtár-listából válassza ki a logikai alkalmazást.
Ismételje meg az alábbi lépéseket az Azurite: Sor Szolgáltatás indítása és Azurite: Táblaszolgáltatás indítása.
Ha sikeres, a képernyő alján található Visual Studio Code tálcán a három tárolószolgáltatás fut.
Csatolja a hibakeresőt a logikai alkalmazás projektjéhez és .NET függvényprojektjéhez az alábbi lépések végrehajtásával:
A Visual Studio Code tevékenységsávján válassza a Futtatás és hibakeresés (billentyűzet: Ctrl+Shift+D).
A Futtatás és hibakeresés listában válassza a Helyi függvényt (<a logikai alkalmazást>) tartalmazó Futtatás/hibakeresés logikai alkalmazás lehetőséget, majd válassza a Lejátszás (zöld nyíl) lehetőséget.
A következő események történnek:
- Megnyílik a terminálablak , és megjeleníti az elindított hibakeresési folyamatot.
- A Debug Console ablak megnyílik, és megmutatja a hibakeresési státuszt.
- A Visual Studio Code alján a tevékenységsáv narancssárgára változik, ami azt jelzi, hogy a .NET hibakereső be van töltve.
Töréspontok beállításához a függvénydefinícióban (<függvénynév>.cs) vagy munkafolyamat-definícióban (workflow.json) keresse meg a törésponthoz tartozó sorszámot, és válassza ki a szomszédos oszlopot, például:
Ha manuálisan szeretné futtatni a Kérelem eseményindítót a munkafolyamatban, nyissa meg a munkafolyamat Áttekintés lapját:
A logikai alkalmazás projektjében nyissa meg a workflow.json fájl helyi menüjét, majd válassza az Áttekintés lehetőséget.
A munkafolyamat Áttekintés lapján a Futtatás eseményindító gomb érhető el, ha manuálisan szeretné elindítani a munkafolyamatot. A Munkafolyamat tulajdonságai alatt a visszahívási URL értéke az a meghívható végpont URL-címe, amelyet a munkafolyamat Kérés triggere hozott létre. Erre az URL-címre küldhet kéréseket a munkafolyamat más alkalmazásokból való aktiválásához, beleértve az egyéb logikai alkalmazások munkafolyamatait is.
Az Áttekintés lap eszköztárán válassza a Futtatás eseményindítót.
A munkafolyamat futtatása után a hibakereső aktiválja az első töréspontot.
A Futtatás menüben vagy a hibakereső eszköztáron válasszon egy hibakeresési műveletet.
A munkafolyamat lefutását követően az Áttekintés lapon látható a befejezett futtatás és annak alapvető adatai.
A munkafolyamat futtatásával kapcsolatos további információk áttekintéséhez válassza ki a befejezett futtatás lehetőséget. Vagy az Időtartam oszlop melletti listából válassza a Futtatás megjelenítése lehetőséget.
6: A kód üzembe helyezése
Az egyéni függvények üzembe helyezése ugyanúgy történik, mint a logikai alkalmazásprojekt üzembe helyezése. Akár Visual Studio Code-ból telepítesz, akár CI/CD DevOps folyamatot használsz, győződj meg róla, hogy a kódodat telepítés előtt készíted. Továbbá győződj meg róla, hogy minden függő összeállítás a következő logikai alkalmazás projektmappákban található, mielőtt telepíted:
.NET 4.7.2: lib/custom/net472 mappa
.NET 8: lib/custom/net8 mappa
További információ:
Függőséginjektálás
A .NET 8 kiválasztásakor a Standard munkafolyamatokban az egyéni .NET kód támogatja a függőség- injektálás (DI)-t. Ez a funkció lehetővé teszi a szolgáltatások egyszeri regisztrálását, ami automatikusan elérhetővé teszi őket az egyéni kódfüggvények számára futásidőben, ahelyett, hogy függőségeket hozna létre az egyes függvényeken belül.
Megjegyzés
Csak a .NET 8 egyéni kódprojektek támogatják a függőséginjektálást a Visual Studio Code-ban.
Függőséginjektálás nélkül az egyéni kódfüggvények gyakran:
- Szolgáltatáspéldányok létrehozása közvetlenül a függvényben.
- Ismétlődő logika több függvény vagy munkafolyamat között.
- Keverje össze az üzleti logikát a beállítási és konfigurációs kóddal.
A munkafolyamatok növekedésének következtében az egyéni kód tesztelése, újrafelhasználása és karbantartása nehezebbé válik. Függőségi injekció alkalmazásával a következőket teheted:
- Különítse el az üzleti logikát a munkafolyamat-végrehajtástól.
- Több egyéni kódfüggvény megosztott szolgáltatásainak újrafelhasználása.
- Egyéni kód igazítása szabványos .NET fejlesztési mintákkal.
Az egyéni kód kezelhetőbbé válik az éles munkafolyamatokban, különösen akkor, ha több munkafolyamat is ugyanarra a logikára támaszkodik.
Mikor érdemes függőséginjektálást használni?
Ha egyszerű vagy egyszeri egyéni kódfüggvényekkel rendelkezik, valószínűleg nincs szüksége függőséginjektálásra. Azonban, ha az egyedi kódod az alábbi követelményeket tartalmazza, fontold meg a dependency injection használatát:
- Több munkafolyamat is ugyanazokat az egyéni kódfüggvényeket használja vagy osztja meg.
- Az egyéni kódfüggvények olyan üzleti vagy útválasztási logikát tartalmaznak, amely idővel változik.
- Jobb tesztelhetőséget vagy hosszú távú karbantarthatóságot igényel.
Hogyan befolyásolja a függőséginjektálás az egyéni .NET függvényeket?
A függőséginjektálás nem változtatja meg sem a saját .NET függvények hívását, sem a munkafolyamat viselkedését. Ez a képesség csak a mögöttes egyéni kódstruktúrát módosítja, de ugyanazt az eredményt eredményezi. A következő lépések ezt a folyamatot írják le:
- Azure Logic Apps betölti az egyéni kódprojektet.
- Azure Logic Apps példányosítja, regisztrálja és injektálja a szükséges szolgáltatásokat a függvénybe.
- A függvény az injektált függőségek használatával fut.
Függőséginjektálás engedélyezése
Ha függőséginjektálást szeretne használni az egyéni .NET kóddal, végezze el a következő követelményeket:
Az egyéni kódprojekt létrehozásakor válassza a .NET 8 lehetőséget.
Csak .NET 8 egyéni kódprojekt támogatja a függőséginjektálást.
A projektben adjon hozzá egy osztályt
StartupConfigurationa függőségek listájának meghatározásához. Valósítsa meg aIConfigureStartupfelületet, és regisztrálja függőségeit aIServiceCollectionhasználatával, például: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>(); } }A(z)
IConfigureStartupinterfész a(z)Microsoft.Azure.Functions.Extensions.Workflowsfájlban van definiálva, míg a(z)IServiceCollectiona(z)Microsoft.Extensions.DependencyInjectionfájlban. További információért lásd: StartupConfiguration.cs.Az egyéni kódfüggvényosztály konstruktorában inicializálja a regisztrált szolgáltatásokat úgy, hogy konstruktorparaméterekként definiálja őket, nem pedig a függvényen belül hozza létre őket, például:
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 }
Az egyéni kódprojekt elkészítésén és üzembe helyezésén túl nem kell további lépéseket tennie, nem szükséges szerkesztenie a munkafolyamatot, vagy más beállítási módosításokat végrehajtania az Azure Logic Apps-ben a függőséginjektálás engedélyezéséhez.
A további információkért nézze meg a egyéni kód függőség injektálási mintát.
Hozz saját NuGet csomagaidat egyedi kódprojektekhez
A .NET 8-at használó NuGet-alapú egyéni kódprojektek esetében saját NuGet-csomagokat is felvehet és kezelhet anélkül, hogy fel kellene oldania a nyelvi feldolgozó gazdagép által használt függőségekkel való ütközéseket. Közvetlenül adja hozzá az összeállítási függőségeket a projekten belül különálló összeállítási helyhez. A következő kivételektől eltekintve bármilyen .NET 8-kompatibilis szerelvényverziót hozhat, amelyekre a projektnek szüksége van:
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Azure.Functions.Extensions.Workflows.Abstractions
Problémák elhárítása
Műveletinformációs ablaktábla hibája
A munkafolyamat-tervezőben, amikor kiválasztja a helyi függvény meghívása nevű beépített műveletet ebben a logikai alkalmazásban, a művelet információs paneljén a következő üzenet jelenik meg:
Failed to retrieve dynamic inputs. Error details:
Ebben a forgatókönyvben ellenőrizze a logikai alkalmazás projektjében, hogy a LogicApp\lib\custom mappa üres-e. Ha üres, a Terminál menüben válassza a Feladat futtatása>funkciók buildelése lehetőséget.
Jelenleg nem fut folyamat a megadott névvel
Ha ezt a hibaüzenetet kapja a munkafolyamat futtatásakor, valószínűleg a hibakereső folyamatot a logikai alkalmazás helyett .NET Functionshez csatolta.
A probléma megoldásához válassza a Futtatás és hibakeresés listában a Csatolás a logikai alkalmazáshoz (LogicApp) lehetőséget, majd a Lejátszás (zöld háromszög) lehetőséget.
A csomag nincs megfelelően importálva
Ha a Kimenet ablak az alábbi üzenethez hasonló hibaüzenetet jelenít meg, győződjön meg arról, hogy legalább .NET 6.0-s verzió van telepítve. Ha telepítve van ez a verzió, próbálja meg eltávolítani, majd újratelepíteni.
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]
Sikertelen build CS1031- és CS1001-hibával
Ha a függvény nem tartalmaz változókat, és létrehozza a kódot, a Kimenet ablakban a következő hibaüzenetek jelenhetnek meg:
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)
A probléma megoldásához adja hozzá a következő paramétert a kód metódusához Run :
string parameter1 = null
Az alábbi példa bemutatja, hogyan jelenik meg a Run metódus aláírása:
public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)