Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Azure Logic Apps (Standart)
Azure Logic Apps'te Standart iş akışınızla satır içinde özel tümleştirme görevleri gerçekleştirmek için doğrudan iş akışınızın içinden C# betikleri ekleyebilir ve çalıştırabilirsiniz. Bu görev için CSharp Betik Kodunu Yürüt adlı Satır içi Kod eylemini kullanın. Bu eylem, bu çıkışı iş akışınızın sonraki eylemlerinde kullanabilmeniz için betiğinizden sonuçları döndürür.
Bu özellik aşağıdaki avantajları sağlar:
Azure İşlevleri kullanmak zorunda kalmadan daha karmaşık tümleştirme zorluklarını çözebilmeniz için iş akışı tasarımcısında kendi betiklerinizi yazın. Başka hizmet planı gerekmez.
Bu avantaj, iş akışı geliştirmeyi kolaylaştırır ve daha fazla hizmet yönetimiyle karmaşıklığı ve maliyeti azaltır.
İş akışınızda kişiselleştirilmiş bir betik alanı sağlayan ayrılmış bir kod dosyası oluşturun.
betikleri iş akışlarınızla birlikte dağıtın.
Bu kılavuzda, eylemin iş akışınıza nasıl ekleneceği ve çalıştırmak istediğiniz C# betik kodunun nasıl ekleneceği gösterilir.
Önkoşullar
Bir Azure hesabı ve aboneliği Ücretsiz bir Azure hesabı edinin.
C# betiğinizi eklemek istediğiniz Standart mantıksal uygulama iş akışı. İş akışının zaten bir tetikleyiciyle başlaması gerekir. Daha fazla bilgi için bkz . Örnek Standart mantıksal uygulama iş akışları oluşturma.
Senaryonuz için herhangi bir tetikleyici kullanabilirsiniz, ancak örnek olarak, bu kılavuz http isteği alındığında adlı İstektetikleyicisini ve yanıt eylemini kullanır. İş akışı, başka bir uygulama veya iş akışı tetikleyicinin uç nokta URL'sine istek gönderdiğinde çalışır. Örnek betik, sonraki eylemlerde kullanabileceğiniz çıkış olarak kod yürütme sonuçlarını döndürür.
Örnek senaryolar
Aşağıdaki listede, belirli tümleştirme görevlerine yardımcı olması için betik kullanabileceğiniz bazı örnek senaryolar açıklanmaktadır:
Yerleşik ifadeler ve veri işlemleri özelliklerinin ötesinde bir yük üzerinde dönüştürmeleri veya işlemeleri ayrıştırın ve gerçekleştirin. Örneğin, aşağı akış işleme için değiştirilmiş bir şema döndürmek için bir betik kullanabilirsiniz.
Sanal makineler gibi Azure kaynaklarını yönetin ve bazı iş mantığına göre bunları başlatın veya adımlayın.
Bir zamanlamaya göre çalışması ve sonuçları SharePoint'te depolaması gereken bir SQL sunucusunda saklı yordamı çalıştırın.
Azure Depolama'ya kaydederek veya ekibinize e-posta göndererek veya bunu bildirerek ayrıntılı bilgilerle iş akışı hatalarını günlüğe kaydedin.
API güvenlik standartlarına uymak için verileri şifreleyin ve şifrelerini çözerek.
HTTP isteği için zip veya sıkıştırmayı açmak için betikte bir dosya geçirin.
Günlük raporlar oluşturmak için çeşitli API'lerden ve dosyalardan veri toplama
Dikkat edilmesi gereken noktalar
Azure portalı betiğinizi bir C# betik dosyası (.csx) olarak workflow.json dosyanızla aynı klasöre kaydeder ve bu klasör iş akışınızın JSON tanımını depolar ve dosyayı iş akışı tanımıyla birlikte mantıksal uygulama kaynağınıza dağıtır. Azure Logic Apps betiği yürütmeye hazır hale getirmek için bu dosyayı derler.
.csx dosya biçimi daha az "ortak" yazmanıza ve yalnızca bir C# işlevi yazmaya odaklanmanıza olanak tanır. Dağıtım sırasında daha kolay yönetim için .csx dosyasını yeniden adlandırabilirsiniz. Ancak, betiği her yeniden adlandırdığınızda, yeni sürüm önceki sürümün üzerine yazar.
Betik iş akışı için yereldir. Aynı betiği diğer iş akışlarında kullanmak için KuduPlus konsolunda betik dosyasını görüntüleyin ve ardından betiği diğer iş akışlarında yeniden kullanmak üzere kopyalayın.
Sınırlamalar
| Veri Akışı Adı | Sınırla | Notlar |
|---|---|---|
| Betik çalıştırma süresi | 10 dakika | Daha uzun sürelere ihtiyaç duyan senaryolarınız varsa, gereksinimleriniz hakkında daha fazla bilgi sağlamak için ürün geri bildirimi seçeneğini kullanın. |
| Çıkış boyutu | 100 MB | Çıkış boyutu, eylemler için çıkış boyutu sınırına bağlıdır ve bu sınır genellikle 100 MB'tır. |
CSharp Betik Kodunu Yürüt eylemini ekleme
Azure portalında Standart mantıksal uygulama kaynağınızı ve iş akışınızı tasarımcıda açın.
Tasarımcıda, iş akışınıza CSharp Betik Kodunu Yürüt adlı Satır içi Kod İşlemleri eylemini eklemek için bu genel adımları izleyin.
Eylem bilgileri bölmesi açıldıktan sonra, Parametreler sekmesindeki Kod Dosyası kutusunda, önceden doldurulmuş örnek kodu kendi betik kodunuzla güncelleştirin.
Betiğin en üstünde gerekli ad alanlarını içeri aktarın ve her zamanki gibi gerekli derleme başvurularını ekleyin.
RunYöntemini uygulayın:Yöntem
Runadı önceden tanımlanmıştır ve iş akışınız yalnızca çalışma zamanında bu Run yöntemini çağırarak yürütülür.İş akışınızdan gelen verilere erişmek için yöntemi,
RunWorkflowContext türüne sahip bir parametre aracılığıyla bu verileri kabul eder. WorkflowContext nesnesini aşağıdaki görevler için kullanabilirsiniz:Betiğin sonuçlarını veya diğer verileri iş akışınıza döndürmek için yöntemini bir dönüş türüyle uygulayın
Run. Daha fazla bilgi için bkz . İş akışınıza veri döndürme.Betiğinizin çıkışını C# dilinde günlüğe kaydetmek için, türe sahip
Runbir parametre aracılığıyla işlev günlükçüsüsü kabul etmek için yöntemini uygulayınILoggerve kolay tanımlama için bağımsız değişken adı olarak kullanınlog. Betiğinize eklemektenConsole.Writekaçının.Önemli
İşlev ana bilgisayarının kapanması durumunda düzgün sonlandırma gerektiren uzun süre çalışan bir betiğiniz varsa, işlev günlükçünüzle birlikte gerekli olan bir iptal belirteci ekleyin.
Daha fazla bilgi için aşağıdaki bölümlere bakın:
Aşağıdaki örnekte, örnek betik koduyla eylemin Parametreler sekmesi gösterilmektedir:
Aşağıdaki örnekte örnek betik kodu gösterilmektedir:
/// Add the required libraries. #r "Newtonsoft.Json" #r "Microsoft.Azure.Workflows.Scripting" using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Logging; using Microsoft.Azure.Workflows.Scripting; using Newtonsoft.Json.Linq; /// <summary> /// Executes the inline C# code. /// </summary> /// <param name="context">The workflow context.</param> /// <remarks> The entry-point to your code. The function signature should remain unchanged.</remarks> public static async Task<Results> Run(WorkflowContext context, ILogger log) { var triggerOutputs = (await context.GetTriggerResults().ConfigureAwait(false)).Outputs; /// Dereferences the 'name' property from the trigger payload. var name = triggerOutputs?["body"]?["name"]?.ToString(); /// To get the outputs from a preceding action, you can uncomment and repurpose the following code. // var actionOutputs = (await context.GetActionResults("<action-name>").ConfigureAwait(false)).Outputs; /// The following logs appear in the Application Insights traces table. // log.LogInformation("Outputting results."); // var name = null; return new Results { Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action." }; } public class Results { public string Message {get; set;} }Daha fazla bilgi için bkz . "#r" - Dış derlemelere başvurma.
bitirdiğinizde iş akışınızı kaydedin.
İş akışınızı çalıştırdıktan sonra, etkinleştirilmişse Application Insights'ta iş akışı çıkışını gözden geçirebilirsiniz. Daha fazla bilgi için bkz . Application Insights'ta günlükleri görüntüleme.
Ad alanlarını içeri aktarma
Ad alanlarını içeri aktarmak için bunu her zamanki gibi yan tümcesiyle using yapın. Aşağıdaki liste otomatik olarak içeri aktarılan ad alanlarını içerdiğinden betiğinize eklemeniz isteğe bağlıdır:
System
System.Collections.Generic
System.IO
System.Linq
System.Net.Http
System.Threading.Tasks
Microsoft.Azure.WebJobs
Microsoft.Azure.WebJobs.Host
Dış derlemelere başvuru ekleme
.NET Framework derlemelerine başvurmak için yönergesini #r "<assembly-name> kullanın, örneğin:
/// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
public static async Task<Results> Run(WorkflowContext context)
{
<...>
}
public class Results
{
<...>
}
Aşağıdaki liste, Azure İşlevleri barındırma ortamı tarafından otomatik olarak eklenen derlemeleri içerir:
mscorlib
System
System.Core
System.Xml
System.Net.Http
Microsoft.Azure.WebJobs
Microsoft.Azure.WebJobs.Host
Microsoft.Azure.WebJobs.Extensions
System.Web.Http
System.Net.Http.Formatting
Newtonsoft.Json
Diğer .csx dosyalarını ekle
Mevcut .csx dosyalarınız varsa, CSharp Betik Kodunu Yürüt eyleminizde bu dosyalardaki sınıfları ve yöntemleri kullanabilirsiniz. Bu görev için #load dosyanızda yönergesini kullanabilirsiniz. Bu yönerge yalnızca .csx dosyalarıyla çalışır, .cs dosyalarıyla çalışmaz. Aşağıdaki seçeneklere sahipsiniz:
Eyleminize doğrudan bir .csx dosyası yükleyin.
.csx dosyası , CSharp Betik Kodunu Yürüt eylemini içeren iş akışıyla aynı klasörde bulunmalıdır. Bkz . .csx'i doğrudan yükleme.
Mantıksal uygulamanız için paylaşılan bir klasörde bulunan bir .csx dosyasına başvurun.
Paylaşılan klasör, mantıksal uygulamanızın
site/wwwroot/klasör yolunda bulunmalıdır. Bkz. Paylaşılan klasörde .csx dosyasına referans .
.csx dosyasını doğrudan yükleme
Aşağıdaki örnek execute_csharp_code.csx dosyası, loadscript.csx adlı betik dosyasının CSharp Betik Kodu Yürütme eylemine #load yönergesi kullanılarak nasıl yükleneceğini gösterir:
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
#load "loadscript.csx"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
/// <summary>
/// Execute the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
/// <remarks> This is the entry-point to your code. The function signature should remain unchanged.</remarks>
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
var name = RunScript().ToString();
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action."
};
}
Paylaşılan klasördeki .csx dosyasına referans verme
Mantıksal uygulama kaynağınız için paylaşılan bir klasörde bulunan bir .csx dosyasına başvurmak için yönergesini kullanabilirsiniz #load . Bu shared klasör, mantıksal uygulama kaynağınızın klasör yolunda bulunmalıdır site/wwwroot/ .
Betik dosyasını klasöre eklemek için shared şu adımları izleyin:
Azure portalında Standart mantıksal uygulama kaynağınızı açın.
Mantıksal uygulama kenar çubuğundaki Geliştirme Araçları'nın altında Gelişmiş Araçlar'ı seçin.
Gelişmiş Araçlar sayfasında Git'i seçerek Kudu+ konsolunu açın.
Hata ayıklama konsolu menüsünü açın ve CMD'yi seçin.
Mantıksal uygulamanızın kök konumuna gidin: site/wwwroot
Paylaşılan klasöre gidin. Bu klasör yoksa klasörü oluşturun.
Araç çubuğunda, klasör adının yanındaki artı işaretini ()+ ve ardından Yeni klasör'i seçin.
Klasör adı olarak girin
shared.Yeni
sharedklasörü açın.
Betik dosyasını
sharedklasörüne sürükleyerek içe aktarın.
Aşağıdaki örnek execute_csharp_code.csx dosyası, #load yönergesini kullanarak importscript.csx adlı karşıya yüklenen betik dosyasıyla CSharp Script Kodunu Çalıştır eylemine nasıl başvurulacağını gösterir.
// Add the required libraries
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
#load "..\shared\importscript.csx"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
/// <summary>
/// Execute the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
/// <remarks> This is the entry-point to your code. The function signature should remain unchanged.</remarks>
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
var name = RunScript().ToString();
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Hello {name} from CSharp action" : "Hello from CSharp action."
};
}
NuGet paketlerini içeri aktarma
NuGet ; paketler olarak adlandırılan .NET kod kitaplıklarını oluşturmanın, yayımlamanın, barındırmanın, bulmanın, kullanmanın ve paylaşmanın Microsoft tarafından desteklenen bir yoludur. CSharp Betik Kodunu Yürüt eylemi, iş akışı klasörünün kökünde bulunan bir function.prof dosyası kullanarak NuGet paketlerini içeri aktarma özelliğini destekler, örneğin:
site/wwwroot/<workflow-name>/workflow.json
site/wwwroot/<workflow-name>/function.proj
Örneğin, Aşağıdaki function.proj dosyasını kullanarak NuGet paketlerini CSharp Betik Kodunu Yürüt eyleminize aktarabilirsiniz:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Serilog" Version="4.3.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
</ItemGroup>
</Project>
C# betiği (.csx) dosyası için
TargetFrameworköğesininetstandard2.0olarak ayarlamanız gerekir.Bu gereksinim, paket sürümlerinin ile
netstandard2.0sınırlı olduğu anlamına gelmez.net6.0ve sonrası için paketlere başvurmaya devam edebilirsiniz.function.proj dosyası başlatıldığında, Azure Logic Apps çalışma zamanının dosyayı tanıyıp kullanması için mantıksal uygulamayı yeniden başlatmanız gerekir.
Yeniden başlatma tamamlandıktan sonra çalışma zamanı gerekli derlemeleri otomatik olarak NuGet.org üzerinden alır ve betiğinizin kullanması için derlemeyi uygun klasöre yerleştirir. Bu derlemeleri el ile yüklemeniz gerekmese de, standart using deyimleri kullanarak kodunuzdaki paketlere doğrudan başvurdığınızdan emin olun, örneğin:
using System.Net;
using Newtonsoft.Json;
using Serilog;
public static async Task<Output> Run(WorkflowContext context)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.CreateLogger();
// Write log messages
Log.Information("Hello, Serilog with Console sink!");
Log.Warning("This is a warning message.");
var outputReturn = new Output()
{
Message = "Utilizing my serilog logger."
};
return outputReturn;
}
public class Output
{
public string Message { get; set; }
}
Akışın çıkışını günlüğe kaydetme
Yönteminize Run tür ve ILogger ad olarak bir parametre log ekleyin, örneğin:
public static void Run(WorkflowContext context, ILogger log)
{
log.LogInformation($"C# script successfully executed.");
}
Application Insights'a günlük çıkışı
Application Insights'ta özel ölçümler oluşturmak için üzerinde LogMetricuzantı yöntemini kullanınILogger.
Aşağıdaki örnekte örnek yöntem çağrısı gösterilmektedir:
logger.LogMetric("TestMetric", 1234);
Betiğinizdeki iş akışı tetikleyicilerine ve eylem çıkışlarına erişme
İş akışınızdaki verilere erişmek için bağlam nesnesi için WorkflowContext aşağıdaki yöntemleri kullanın:
GetTriggerResultsyöntemTetikleyici çıkışlarına erişmek için bu yöntemi kullanarak tetikleyiciyi ve özelliği aracılığıyla kullanılabilen çıkışlarını temsil eden bir nesne döndürebilirsiniz
Outputs. Bu nesnenin JObject türü vardır ve tetikleyici çıkışlarındaki çeşitli özelliklere erişmek için dizin oluşturucu olarak köşeli ayraçları ([]) kullanabilirsiniz.Aşağıdaki örnek, tetikleyici çıkışlarındaki özelliğinden
bodyverileri alır:public static async Task<Results> Run(WorkflowContext context, ILogger log) { var triggerOutputs = (await context.GetTriggerResults().ConfigureAwait(false)).Outputs; var body = triggerOutputs["body"]; return new Results; } public class Results { <...> }GetActionResultsyöntemEylem çıkışlarına erişmek için, bu yöntemi kullanarak eylemi ve özelliği aracılığıyla kullanılabilen çıkışlarını temsil eden bir nesne döndürebilirsiniz
Outputs. Bu yöntem bir eylem adını parametre olarak kabul eder. Aşağıdaki örnek, çıkışlardaki özelliğindenbodyaction-name adlı bir eylemin verilerini alır:public static async Task<Results> Run(WorkflowContext context, ILogger log) { var actionOutputs = (await context.GetActionResults("action-name").ConfigureAwait(false)).Outputs; var body = actionOutputs["body"]; return new Results; } public class Results { <...> }
Ortam değişkenlerine veya uygulama ayarı değerine erişme
Ortam değişkeni veya uygulama ayarı değeri almak için yöntemini kullanın System.Environment.GetEnvironmentVariable , örneğin:
public static void Run(WorkflowContext context, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
log.LogInformation(GetEnvironmentVariable("AzureWebJobsStorage"));
log.LogInformation(GetEnvironmentVariable("WEBSITE_SITE_NAME"));
}
public static string GetEnvironmentVariable(string name)
{
return name + ": " +
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
verileri iş akışınıza döndürme
Bu görev için yönteminizi Run bir dönüş türü ve return deyimiyle uygulayın. Zaman uyumsuz bir sürüm istiyorsanız, yöntemini bir Run özniteliği ve Task<return-type> anahtar sözcüğüyle uygulayınasync. Dönüş değeri, sonraki iş akışı eylemlerinin başvurabileceği betik eyleminin outputs body özelliğine ayarlanır.
Aşağıdaki örnekte özniteliği, anahtar sözcüğü ve deyimi olan RunTask<Results> bir async yöntem gösterilmektedirreturn:
public static async Task<Results> Run(WorkflowContext context, ILogger log)
{
return new Results
{
Message = !string.IsNullOrEmpty(name) ? $"Returning results with status message."
};
}
public class Results
{
public string Message {get; set;}
}
Betik dosyasını görüntüleme
Azure portalında, istediğiniz iş akışını içeren Standart mantıksal uygulama kaynağınızı açın.
Mantıksal uygulama kenar çubuğundaki Geliştirme Araçları'nın altında Gelişmiş Araçlar'ı seçin.
Gelişmiş Araçlar sayfasında Git'i seçerek KuduPlus konsolunu açın.
Hata ayıklama konsolu menüsünü açın ve CMD'yi seçin.
Mantıksal uygulamanızın kök konumuna gidin: site/wwwroot
şu yol boyunca .csx dosyasını içeren iş akışınızın klasörüne gidin: site/wwwroot/{workflow-name}
Dosya adının yanındaki Düzenle'yi seçerek dosyayı açın ve görüntüleyin.
Application Insights'ta günlükleri görüntüleme
Azure portalında mantıksal uygulama kenar çubuğundaki Ayarlar'ın altında Application Insights'ı seçin. Mantıksal uygulamanızı seçin.
Application Insights kenar çubuğundaki İzleme'nin altında Günlükler'i seçin.
İş akışı yürütmenizdeki izlemeleri veya hataları bulmak için bir sorgu oluşturun, örneğin:
union traces, errors | project TIMESTAMP, message
Derleme hataları
Bu sürümde web tabanlı düzenleyici sınırlı IntelliSense desteği içeriyor ve bu destek hala geliştiriliyor. İş akışınızı kaydettiğinizde tüm derleme hataları algılandı ve Azure Logic Apps çalışma zamanı betiğinizi derler. Bu hatalar mantıksal uygulamanızın hata günlüklerinde görünür.
Çalışma zamanı hataları
Betiğiniz yürütürken bir hata oluşursa Azure Logic Apps şu adımları gerçekleştirir:
- Hatayı iş akışınıza geri geçirir.
- Betik eylemini Başarısız olarak işaretler.
- Betiğinizden oluşan özel durumu temsil eden bir hata nesnesi sağlar.
Aşağıdaki örnekte örnek bir hata gösterilmektedir:
'CSharp_MyLogicApp-InvalidAction_execute_csharp_script_code.csx' işlevi 'Yok' eylemi iş akışında yok' hatasıyla başarısız oldu. yürütülürken. lütfen işlev kodunun geçerli olduğunu doğrulayın.
Örnek betikler
Aşağıdaki örnek betikler, gerçekleştirebileceğiniz çeşitli görevleri gerçekleştirir
HTTP eyleminden metin dosyaları içeren zip dosyasını dize dizisine açma
// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using System;
using System.IO;
using System.IO.Compression;
using System.Text;
using System.Collections.Generic;
/// <summary>
/// Executes the inline C# code.
/// </summary>
/// <param name="context">The workflow context.</param>
public static async Task<List<string>> Run(WorkflowContext context)
{
var outputs = (await context.GetActionResults("HTTP_1").ConfigureAwait(false)).Outputs;
var base64zipFileContent = outputs["body"]["$content"].ToString();
// Decode base64 to bytes.
byte[] zipBytes = Convert.FromBase64String(base64zipFileContent);
List<string> fileContents = new List<string>();
// Creates an in-memory stream from the zip bytes.
using (MemoryStream zipStream = new MemoryStream(zipBytes))
{
// Extracts files from the zip archive.
using (ZipArchive zipArchive = new ZipArchive(zipStream))
{
foreach (ZipArchiveEntry entry in zipArchive.Entries)
{
// Read each file's content.
using (StreamReader reader = new StreamReader(entry.Open()))
{
string fileContent = reader.ReadToEnd();
fileContents.Add(fileContent);
}
}
}
}
return fileContents;
}
Uygulama ayarlarından bir anahtar kullanarak verileri şifreleme
// Add the required libraries.
#r "Newtonsoft.Json"
#r "Microsoft.Azure.Workflows.Scripting"
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Microsoft.Azure.Workflows.Scripting;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// Executes the inline csharp code.
/// </summary>
/// <param name="context">The workflow context.</param>
public static async Task<string> Run(WorkflowContext context)
{
var compose = (await context.GetActionResults("compose").ConfigureAwait(false)).Outputs;
var text = compose["sampleData"].ToString();
return EncryptString(text);
}
public static string EncryptString(string plainText)
{
var key = Environment.GetEnvironmentVariable("app-setting-key");
var iv = Environment.GetEnvironmentVariable("app-setting-iv");
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = Encoding.UTF8.GetBytes(key);
aesAlg.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
WorkflowContext sınıfı
bir iş akışı bağlamı temsil eder.
Yöntemler
GetActionResult(string actionName)
İş akışındaki belirli bir eylemin sonucunu alır.
Zaman uyumsuz sürüm, dönüş türü olarak Görev'i<> kullanır, örneğin:
Task<WorkflowOperationResult> GetActionResult(string actionName)
Parametreler
actionName: Eylem adı.
Döndürülenler
Zaman uyumsuz sürüm, zaman uyumsuz işlemi temsil eden bir Task nesne döndürür. Görev sonucu bir WorkflowOperationResult nesne içeriyor. WorkflowOperationResult nesne özellikleri hakkında bilgi için bkz. WorkflowOperationResult sınıfı.
RunTriggerResult()
sonucu iş akışındaki tetikleyiciden alır.
Zaman uyumsuz sürüm, dönüş türü olarak Görev'i<> kullanır, örneğin:
Task<WorkflowOperationResult> RunTriggerResult()
Parametreler
Hiçbiri.
Döndürülenler
Zaman uyumsuz sürüm, zaman uyumsuz işlemi temsil eden bir Task nesne döndürür. Görev sonucu bir WorkflowOperationResult nesne içeriyor. WorkflowOperationResult nesne özellikleri hakkında bilgi için bkz. WorkflowOperationResult sınıfı.
WorkflowOperationResult sınıfı
bir iş akışı işleminin sonucunu temsil eder.
Properties
| Veri Akışı Adı | Tür | Açıklama |
|---|---|---|
| Adı | String | İşlem adını alır veya ayarlar. |
| Giriş | JToken | İşlem yürütme girişlerini alır veya ayarlar. |
| Çıkışlar | JToken | İşlem yürütme çıkışlarını alır veya ayarlar. |
| StartTime | DateTime mı? | İşlemin başlangıç saatini alır veya ayarlar. |
| EndTime | DateTime mı? | İşlemin bitiş saatini alır veya ayarlar. |
| OperationTrackingId | String | İşlem izleme kimliğini alır veya ayarlar. |
| Kod | String | Eylemin durum kodunu alır veya ayarlar. |
| Statü | String | Eylemin durumunu alır veya ayarlar. |
| Hata | JToken | Eylemin hatasını alır veya ayarlar. |
| TrackedProperties | JToken | Eylemin izlenen özelliklerini alır veya ayarlar. |