Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Azure Logic Apps (Standard)
Saat skenario integrasi Anda memerlukan tugas atau logika kustom di luar operasi dan konektor bawaan di Azure Logic Apps, buat dan jalankan kode .NET sebagai fungsi kustom dalam alur kerja Standar Anda. Alur kerja Anda kemudian dapat melakukan tugas seperti penguraian kustom, validasi, atau bahkan menerapkan aturan bisnis. Dengan menggunakan kemampuan ini, Anda dapat menerapkan skenario seperti tugas berikut:
- Menyesuaikan implementasi logika bisnis.
- Kustomisasi penguraian untuk mengekstrak informasi dari pesan masuk.
- Lakukan validasi data dan transformasi sederhana.
- Melakukan penghitungan.
- Bentuk pesan keluar yang dikirim ke sistem lain, seperti antarmuka pemrograman aplikasi (API).
Panduan ini menunjukkan cara menulis dan menjalankan kode .NET Anda sendiri langsung di alur kerja Standar dengan menggunakan Visual Studio Code. Anda mempelajari cara membuat, men-debug, dan menyebarkan fungsi lokal dengan menggunakan Visual Studio Code sehingga Anda dapat menyimpan kode kustom dan orkestrasi alur kerja bersama-sama, men-debugnya dalam satu sesi, dan menyebarkannya sebagai solusi tunggal.
Catatan
Kode .NET sebaris kustom tidak cocok untuk skenario berikut:
- Proses yang dijalankan mungkin akan berlangsung melebihi 10 menit.
- Berusaha melakukan transformasi pesan dan data berukuran besar.
- Menjalankan skenario pemrosesan batch dan pembongkaran batch yang kompleks.
- Menggunakan komponen alur server BizTalk yang menerapkan streaming.
Untuk informasi selengkapnya, lihat Batasan.
Prasyarat
Akun dan langganan Azure. Dapatkan akun Azure gratis.
Visual Studio Code terbaru dengan ekstensi Azure Logic Apps (Standar).
Untuk prasyarat, lihat Buat alur kerja Standar di Azure Logic Apps penyewa tunggal dengan Visual Studio Code.
Ekstensi ini memberikan kemampuan dan manfaat berikut:
- Tulis kode Anda sendiri dengan membuat fungsi yang memiliki fleksibilitas dan kontrol untuk menyelesaikan masalah integrasi Anda yang paling menantang.
- Debug kode secara lokal di Visual Studio Code. Melangkah melalui kode dan alur kerja Anda dalam sesi debugging yang sama.
- Sebarkan kode bersama alur kerja Anda. Tidak ada paket layanan lain yang diperlukan.
- Mendukung skenario migrasi BizTalk Server sehingga Anda dapat mengangkat dan mengalihkan investasi .NET kustom dari lokal ke cloud.
Folder lokal yang akan digunakan untuk proyek kode Anda.
Batasan
Anda dapat menggunakan kemampuan fungsi kustom hanya dalam Visual Studio Code berjalan di Windows. Kemampuan ini mendukung penggunaan .NET Framework dan .NET 8 untuk alur kerja aplikasi logika Standar yang disebarkan dan dihosting di Azure.
Anda tidak dapat menggunakan penulisan fungsi kustom di portal Azure. Namun, untuk bekerja dengan output dari fungsi kustom di alur kerja Anda, ikuti langkah-langkah berikut:
setelah menyebarkan Fungsi ke Azure, ikuti langkah-langkah di Memanggil kode Anda dari alur kerja untuk portal Azure.
Tambahkan tindakan bawaan bernama Panggil fungsi lokal di aplikasi logika ini ke alur kerja Anda. Pilih fungsi kustom yang disebarkan yang Anda inginkan dan jalankan kode Anda.
Gunakan tindakan alur kerja berikutnya untuk mereferensikan output fungsi kustom, seperti yang dapat Anda lakukan di alur kerja lainnya. Anda dapat melihat riwayat eksekusi, input, dan output tindakan bawaan.
Untuk batasan umum, lihat Limits dan referensi konfigurasi untuk Azure Logic Apps.
1: Membuat proyek kode
Ekstensi Azure Logic Apps (Standar) untuk Visual Studio Code menyertakan templat proyek kode yang memberikan pengalaman yang efisien untuk menulis, men-debug, dan menyebarkan kode Anda sendiri dengan alur kerja Anda. Templat proyek ini membuat file ruang kerja dan dua proyek sampel: satu proyek untuk menulis kode Anda dan proyek lain untuk membuat alur kerja Anda.
Catatan
Anda tidak dapat menggunakan folder proyek yang sama untuk kode dan alur kerja Anda.
Untuk membuat proyek kode, ikuti langkah-langkah berikut:
Di Visual Studio Code, sign ke akun Azure Anda.
Jika masuk membutuhkan waktu lebih lama dari biasanya, Visual Studio Code meminta Anda untuk masuk melalui situs web autentikasi Microsoft dengan memberi Anda kode perangkat. Untuk masuk dengan menggunakan kode sebagai gantinya, ikuti langkah-langkah berikut:
Pilih Gunakan Kode Perangkat, lalu pilih Salin & Buka.
Pilih Buka Tautan untuk membuka jendela browser baru dan lanjutkan ke situs web autentikasi.
Di halaman Masuk ke akun Anda, masukkan kode autentikasi Anda, dan pilih Berikutnya.
Pada Bilah Aktivitas, pilih ikon Azure.
Di jendela Azure, buka bagian Workspace. Pindahkan penunjuk Anda ke area judul sehingga toolbar muncul.
Dari menu Azure Logic Apps, pilih Buat ruang kerja aplikasi logika baru.
Di jendela Pilih Folder , telusuri ke folder proyek lokal, pilih folder, lalu Pilih.
Di jendela Buat ruang kerja aplikasi logika baru , untuk perintah Nama ruang kerja , masukkan nama untuk ruang kerja Anda, lalu tekan Enter.
Contoh ini menggunakan
weather-appsebagai nama ruang kerja:
Contoh ini menggunakan
weather-projectsebagai nama ruang kerja.Untuk perintah Pilih templat untuk proyek baru Anda , pilih Aplikasi logika dengan proyek kode kustom.
Untuk prompt Pilih kerangka kerja target, pilih .NET Framework atau .NET 8.
Ikuti perintah berikutnya untuk memberikan informasi berikut:
Petunjuk Contoh nilai Nama Aplikasi Logika weather-logic-appnama Function untuk proyek fungsi .NET Anda WeatherForecastNamespace untuk proyek fungsi .NET Anda Contoso.EnterprisePilih templat untuk alur kerja pertama proyek Anda:
- Alur kerja stateful
- Alur kerja tanpa status
- Agen otonom
- Agen percakapan
- Lewati untuk saat iniAlur kerja yang memiliki status Nama alur kerja weather-workflowUntuk perintah Pilih bagaimana Anda ingin membuka proyek Anda , pilih Buka di jendela saat ini.
Setelah Anda menyelesaikan langkah ini, Visual Studio Code membuat ruang kerja Anda, yang mencakup proyek fungsi .NET dan proyek aplikasi logika, secara default, misalnya:
Di jendela Explorer , perhatikan folder berikut ini di ruang kerja Anda:
Folder Deskripsi < nama ruang kerja> Berisi proyek fungsi .NET dan proyek alur kerja aplikasi logika Anda. < nama aplikasi logika> Berisi file dan artefak lain untuk proyek aplikasi logika Anda. Misalnya, file workflow.json adalah file definisi alur kerja tempat Anda dapat membangun alur kerja Anda. < nama fungsi> Berisi file dan artefak lain untuk proyek fungsi .NET Anda. Misalnya, <file function-name>.cs adalah file kode tempat Anda dapat menulis kode Anda. Untuk prompt Mengaktifkan konektor untuk Azure dalam Logic Apps <logic-app-name>, pilih Gunakan konektor dari Azure.
Untuk perintah Pilih langganan, pilih langganan Azure yang Anda inginkan.
Untuk perintah Pilih grup sumber daya untuk sumber daya baru , pilih grup sumber daya yang Anda inginkan atau Buat grup sumber daya baru.
Untuk perintah Pilih lokasi untuk sumber daya baru, pilih wilayah Azure untuk melakukan penyebaran.
Untuk metode autentikasi Pilih untuk konektor Azure, pilih jenis autentikasi yang akan digunakan untuk koneksi yang memerlukan autentikasi.
Jenis autentikasi Deskripsi Identitas yang dikelola Pilih Identitas Layanan Terkelola untuk menggunakan identitas yang ditetapkan sistem atau ditetapkan pengguna pada sumber daya aplikasi logika Anda.
Secara default, sumber daya aplikasi logika Standar sudah mengaktifkan identitas yang ditetapkan sistem. Namun, Anda perlu menyiapkan identitas dengan akses peran pada sumber daya target ditambah persyaratan lainnya.
Untuk informasi selengkapnya, lihat Menetapkan akses berbasis peran ke identitas terkelola.Kunci koneksi Siapkan akses ke sumber daya target dengan menggunakan string koneksi dan kunci akses.
Setelah menyelesaikan langkah-langkah ini, lanjutkan ke bagian berikutnya sehingga Anda dapat menulis kode Anda.
2: Tulis kode Anda
Di jendela Explorer, perluas folder proyek fungsi, dan buka < file function-name>.cs .
File ini berisi kode sampel dan elemen kode tertentu dengan nilai yang sebelumnya Anda berikan.
Dalam contoh ini, file fungsi WeatherForecast.cs berisi elemen kode ini dengan nilai contoh:
Elemen kode Nilai Nama namespace Contoso.EnterpriseNama Kelas WeatherForecastNama fungsi WeatherForecastParameter fungsi zipcode,temperatureScaleTipe pengembalian TaskJenis kompleks WeatherContoh berikut menunjukkan kode sampel lengkap:
//------------------------------------------------------------ // 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; } } } }Definisi fungsi mencakup metode default
Runyang dapat Anda gunakan untuk memulai. Sampel iniRunmenunjukkan beberapa kemampuan yang tersedia dengan fitur fungsi kustom, seperti meneruskan input dan output yang berbeda, termasuk jenis .NET yang kompleks.File <nama> fungsi.cs juga menyertakan
ILoggerantarmuka yang menyediakan dukungan untuk peristiwa pengelogan ke sumber daya Application Insights. Anda dapat mengirim informasi pelacakan ke Application Insights dan menyimpan informasi tersebut dengan informasi pelacakan dari alur kerja Anda, misalnya: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); <...> }Ganti contoh kode fungsi dengan kode fungsi Anda sendiri, dan edit metode default
Rununtuk skenario spesifik Anda. Atau, Anda dapat menyalin fungsi, termasuk[FunctionName("<function-name>")]deklarasi, lalu mengganti nama fungsi dengan nama yang unik. Anda kemudian dapat mengedit fungsi yang diganti namanya untuk memenuhi kebutuhan Anda.
Contoh ini berlanjut dengan kode sampel asli, dengan asumsi tidak ada perubahan.
3: Mengkompilasi dan membangun kode Anda
Setelah Anda selesai menulis kode Anda, kompilasi untuk memastikan bahwa tidak ada kesalahan build. Proyek fungsi .NET Anda secara otomatis menyertakan tugas build, yang mengkompilasi dan menambahkan kode Anda ke folder lib\custom dalam proyek aplikasi logika Anda, di mana alur kerja mencari fungsi kustom untuk dijalankan. Bergantung pada versi .NET Anda, tugas-tugas ini menempatkan rakitan di folder lib\custom\net472 atau lib\custom\net8.
Ikuti langkah-langkah berikut:
Di Visual Studio Code, pada Bilah Aktivitas, pilih Explorer.
Di jendela Explorer, buka menu pintasan untuk folder proyek fungsi, dan pilih Bangun proyek fungsi.
Tugas build berjalan untuk proyek fungsi-fungsi. Jika build Anda berhasil, jendela Terminal menampilkan pesan Build berhasil .
Konfirmasikan bahwa item berikut ada di proyek aplikasi logika Anda:
Di ruang kerja Anda, perluas folder berikut: <your-logic-app>>lib\custom>net472 atau net8, berdasarkan versi .NET Anda. Konfirmasikan bahwa subfolder bernama net472 atau net8 berisi file assembly (DLL) yang diperlukan untuk menjalankan kode Anda, termasuk file bernama <function-name>.dll.
Di ruang kerja Anda, perluas folder berikut: <aplikasi logika Anda>>lib\custom><function-name>. Konfirmasikan bahwa subfolder bernama <function-name> berisi file function.json, yang menyertakan metadata tentang kode fungsi yang Anda tulis. Perancang alur kerja menggunakan file ini untuk menentukan input dan output yang diperlukan saat memanggil kode Anda.
Contoh berikut menunjukkan sampel rakitan yang dihasilkan dan file lain dalam proyek aplikasi logika:
4: Memanggil kode Anda dari alur kerja
Setelah Anda mengonfirmasi bahwa kode Anda dikompilasi dan proyek aplikasi logika Anda berisi file yang diperlukan agar kode Anda berjalan, siapkan alur kerja Anda untuk memanggil kode Anda.
Di jendela Explorer , perluas <workspace-name>, <logic-app-name>, lalu <workflow-name>.
Buka menu pintasan untuk workflow.json, dan pilih Buka perancang.
Perancang alur kerja terbuka dan memperlihatkan alur kerja default dengan pemicu dan tindakan berikut:
Pengoperasian Deskripsi Pemicu Pemicu Permintaan bawaan bernama Saat permintaan HTTP diterima. Action Tindakan bawaan bernama Panggil fungsi lokal di aplikasi logika ini. Action Tindakan Respons bawaan bernama Respons yang Anda gunakan untuk membalas penelepon hanya saat Anda menggunakan pemicu Permintaan . Pada perancang, pilih tindakan bernama Panggil fungsi lokal di aplikasi logika ini.
Panel informasi tindakan terbuka sehingga Anda bisa menyiapkan panggilan fungsi kustom, misalnya:
Tinjau dan konfirmasikan bahwa nilai parameter Nama fungsi diatur ke fungsi yang ingin Anda jalankan. Tinjau atau ubah nilai parameter lain yang digunakan fungsi Anda.
5: Debug kode dan alur kerja Anda
Untuk setiap layanan Azure Storage berikut, mulai emulator penyimpanan Azurite:
- Azure Blob Service
- Layanan Antrean Azure
- Layanan Tabel Azure
Dari menu Visual Studio Code View, pilih Palet Perintah.
Pada perintah yang muncul, pilih Azurite: Mulai Blob Service dari daftar.
Dari daftar direktori kerja yang muncul, pilih aplikasi logika Anda.
Ulangi langkah-langkah ini untuk Azurite: Mulai Layanan Antrian dan Azurite: Mulai Layanan Tabel.
Jika Anda berhasil, taskbar Visual Studio Code di bagian bawah layar menampilkan tiga layanan penyimpanan yang berjalan.
Lampirkan debugger ke proyek aplikasi logika dan proyek fungsi .NET Anda dengan mengikuti langkah-langkah berikut:
Di Visual Studio Code, pada Bilah Aktivitas, pilih Mulai dan Debug (keyboard: Ctrl+Shift+D).
Dari daftar Jalankan dan Debug, pilih Jalankan/Debug aplikasi logika dengan fungsi lokal (<aplikasi >), lalu pilih Putar (panah hijau).
Peristiwa berikut terjadi:
- Jendela Terminal terbuka dan memperlihatkan proses debugging yang dimulai.
- Jendela Konsol Debug dibuka dan menampilkan status debugging.
- Di bagian bawah Visual Studio Code, bilah tugas berubah menjadi oranye, menunjukkan bahwa debugger .NET dimuat.
Untuk mengatur titik henti apa pun, dalam definisi fungsi Anda (<nama> fungsi.cs) atau definisi alur kerja (workflow.json), temukan nomor baris tempat Anda menginginkan titik henti, dan pilih kolom yang berdekatan, misalnya:
Untuk menjalankan pemicu Permintaan secara manual di alur kerja Anda, buka halaman Gambaran Umum alur kerja:
Dari proyek aplikasi logika Anda, buka menu pintasan file workflow.json , lalu pilih Gambaran Umum.
Pada halaman Gambaran Umum alur kerja, tombol Jalankan pemicu tersedia saat Anda ingin memulai alur kerja secara manual. Di bawah Properti Alur Kerja, nilai URL Panggilan Balik adalah URL untuk titik akhir yang dapat dipanggil yang dibuat oleh pemicu Permintaan di alur kerja Anda. Anda dapat mengirim permintaan ke URL ini untuk memicu alur kerja Anda dari aplikasi lain, termasuk alur kerja aplikasi logika lainnya.
Pada toolbar halaman Gambaran Umum , pilih Jalankan pemicu.
Setelah alur kerja Anda mulai berjalan, debugger mengaktifkan titik henti pertama Anda.
Pada menu Jalankan atau toolbar debugger, pilih tindakan debug.
Setelah eksekusi alur kerja selesai, halaman Gambaran Umum memperlihatkan eksekusi yang sudah selesai dan detail dasar tentang eksekusi tersebut.
Untuk melihat lebih banyak informasi tentang pelaksanaan alur kerja, pilih pelaksanaan yang telah selesai. Atau, dari daftar di sebelah kolom Durasi, pilih Tampilkan jalankan.
6: Menyebarkan kode Anda
Sebarkan fungsi kustom dengan cara yang sama seperti Anda menyebarkan proyek aplikasi logika Anda. Baik Anda menyebarkan dari Visual Studio Code atau menggunakan proses CI/CD DevOps, pastikan Anda membuat kode sebelum menyebarkannya. Selain itu, pastikan bahwa semua rakitan dependen ada di folder proyek aplikasi logika berikut sebelum Anda menyebarkan:
.NET 4.7.2: folder lib/custom/net472
.NET 8: folder lib/custom/net8
Untuk informasi selengkapnya, lihat alur kerja Deploy Standard dari Visual Studio Code ke Azure.
Injeksi Ketergantungan
Saat Anda memilih .NET 8, kode .NET kustom dalam alur kerja Standar mendukung injeksi dependensi (DI). Kemampuan ini memungkinkan Anda mendaftarkan layanan sekali, yang membuatnya tersedia secara otomatis untuk fungsi kode kustom Anda pada runtime, daripada membuat dependensi di dalam setiap fungsi.
Catatan
Hanya .NET 8 proyek kode kustom dalam Visual Studio Code mendukung injeksi dependensi.
Tanpa penyuntikan dependensi, fungsi kode kustom sering:
- Buat instans layanan langsung dalam fungsi .
- Menduplikasi logika di beberapa fungsi atau alur kerja.
- Mencampurkan logika bisnis dengan kode pengaturan dan konfigurasi.
Seiring bertambahnya alur kerja, kode kustom menjadi lebih sulit untuk diuji, digunakan kembali, dan dipertahankan. Dengan injeksi dependensi, Anda dapat:
- Pisahkan logika bisnis dari eksekusi alur kerja.
- Gunakan kembali layanan bersama di berbagai fungsi kode kustom.
- Sejajarkan kode kustom dengan pola pengembangan .NET standar.
Kode kustom menjadi lebih mudah dikelola dalam alur kerja produksi, terutama ketika beberapa alur kerja mengandalkan logika yang sama.
Kapan harus menggunakan injeksi dependensi
Jika Anda memiliki fungsi kode kustom sederhana atau satu kali, Anda mungkin tidak memerlukan injeksi dependensi. Namun, jika kode kustom Anda memiliki persyaratan berikut, Anda mungkin perlu menggunakan injeksi dependensi:
- Beberapa alur kerja menggunakan atau berbagi fungsi kode kustom yang sama.
- Fungsi kode kustom Anda berisi logika bisnis atau perutean yang berubah dari waktu ke waktu.
- Anda memerlukan uji coba yang lebih baik atau pemeliharaan jangka panjang.
Bagaimana injeksi dependensi memengaruhi fungsi .NET kustom
Injeksi dependensi tidak mengubah cara Anda memanggil fungsi .NET kustom atau perilaku alur kerja Anda. Kemampuan ini hanya mengubah struktur kode kustom yang mendasar tetapi menghasilkan hasil yang sama. Langkah-langkah berikut menjelaskan proses ini:
- Azure Logic Apps memuat proyek kode kustom Anda.
- Azure Logic Apps menginstansiasi, mendaftarkan, dan menyuntikkan layanan yang diperlukan ke dalam fungsi.
- Fungsi beroperasi menggunakan dependensi yang disuntikkan.
Aktifkan injeksi dependensi
Untuk menggunakan injeksi dependensi dengan kode .NET kustom Anda, lengkapi persyaratan berikut:
Saat Anda membuat proyek kode kustom, pilih .NET 8.
Hanya .NET 8 proyek kode kustom yang mendukung injeksi dependensi.
Dalam proyek Anda, tambahkan
StartupConfigurationkelas untuk menentukan daftar dependensi. TerapkanIConfigureStartupantarmuka dan daftarkan dependensi Anda dengan menggunakanIServiceCollection, misalnya: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>(); } }Antarmuka
IConfigureStartupditentukan dalamMicrosoft.Extensions.DependencyInjection. Untuk informasi selengkapnya, lihat StartupConfiguration.csDalam konstruktor kelas fungsi kode kustom Anda, inisialisasi layanan terdaftar dengan mendefinisikannya sebagai parameter konstruktor, daripada membuatnya di dalam fungsi, misalnya:
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 }
Selain membangun dan menyebarkan proyek kode kustom, Anda tidak perlu mengambil langkah lain, mengedit alur kerja Anda, atau membuat perubahan penyiapan lainnya di Azure Logic Apps untuk mengaktifkan injeksi dependensi.
Untuk informasi selengkapnya, lihat Contoh Penerapan Injeksi Dependensi Kode Khusus.
Membawa paket NuGet Anda sendiri
Untuk proyek kode kustom berbasis NuGet yang menggunakan .NET 8, Anda dapat menyertakan dan mengelola paket NuGet Anda sendiri tanpa harus mengatasi konflik dengan dependensi yang digunakan oleh host pekerja bahasa. Cukup tambahkan dependensi perakitan secara langsung ke lokasi perakitan terpisah di proyek Anda. Dengan pengecualian berikut, Anda dapat membawa versi rakitan dependen yang kompatibel dengan .NET 8 yang dibutuhkan oleh proyek Anda:
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Azure.Functions.Extensions.Workflows.Abstractions
Memecahkan masalah
Kesalahan panel informasi tindakan
Pada perancang alur kerja, saat Anda memilih tindakan bawaan bernama Panggil fungsi lokal di aplikasi logika ini, panel informasi tindakan memperlihatkan pesan berikut:
Failed to retrieve dynamic inputs. Error details:
Dalam skenario ini, periksa proyek aplikasi logika Anda untuk melihat apakah folder LogicApp\lib\custom kosong. Jika kosong, dari menu Terminal, pilih Jalankan Tugas>build Functions.
Tidak ada proses dengan nama yang ditentukan yang sedang berjalan
Jika Anda mendapatkan pesan kesalahan ini saat menjalankan alur kerja, Anda mungkin melampirkan proses debugger ke .NET Functions, bukan ke aplikasi logika Anda.
Untuk memperbaiki masalah ini, dari daftar Jalankan dan Debug , pilih Lampirkan ke aplikasi logika (LogicApp), lalu pilih Putar (segitiga hijau).
Paket tidak diimpor dengan benar
Jika jendela Output memperlihatkan kesalahan yang mirip dengan pesan berikut, pastikan Anda telah menginstal setidaknya .NET 6.0. Jika Anda telah menginstal versi ini, coba hapus instalan lalu instal ulang.
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]
Kegagalan dalam pembangunan
Jika fungsi Anda tidak menyertakan variabel dan Anda membangun kode, jendela Output mungkin menampilkan pesan kesalahan berikut:
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)
Untuk memperbaiki masalah ini, dalam metode kode Run Anda, tambahkan parameter berikut:
string parameter1 = null
Contoh berikut menunjukkan bagaimana signature metode Run muncul:
public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)
Konten terkait
Buat alur kerja aplikasi logika Standar dengan Visual Studio Code