Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Important
Wsparcie dla wersji 1.x środowiska Azure Functions zakończyło się 14 września 2026 roku. Aby uzyskać pełną pomoc techniczną, przeprowadź migrację aplikacji do wersji 4.x.
Ten artykuł zachowuje kluczowe informacje historyczne oraz linki do szczegółowych odniesień dotyczących aplikacji funkcyjnych, które nadal korzystają z runtime 1.x. Nie używaj runtime 1.x do nowych aplikacji funkcyjnych.
Zakres uruchomienia 1.x
Azure Functions runtime 1.x zakończył wsparcie 14 września 2026 roku i nie jest wspierany dla nowych ani istniejących aplikacji Function. Runtime 1.x miał następujące cechy:
- Działał tylko na Windows.
- Wspierał aplikacje C# skierowane do .NET Framework i aplikacji JavaScript.
- Aplikacje C# działały w trakcie pracy. Runtime 1.x nie obsługiwał modelu izolowanego pracownika.
- Do lokalnego rozwoju używał wersji 1.x Azure Functions Core Tools. Core Tools 1.x działa tylko na Windows.
- Runtime zawierał obsługiwane przypisania. Późniejsze wersje wykonawcze używają osobno wersjonowanych rozszerzeń wiązań lub pakietów rozszerzeniowych.
Wersje modeli w czasie rzeczywistym, rozszerzeniach i programowaniu
Wersja Azure Functions działająca nie jest taka sama jak wersje używane przez bindingi rozszerzeń, pakiety rozszerzenia czy modele programowania językowego. Etykieta wersji na innym komponencie nie oznacza, że aplikacja korzysta z Azure Functions runtime 1.x. Przykład:
- Modele programowania Python v1 i v2 działają na runtime 4.x.
- Modele programistyczne Node.js v3 i v4 działają na runtime 4.x.
- Pakiety rozszerzenia i pakiety wiążące pakiety rozszerzenia są niezależne od wersji wykonawczej.
Migracja do runtime 4.x
Aby przywrócić aplikację do pełnego wsparcia, przenieś ją z runtime 1.x na runtime 4.x. Przewodnik migracyjny obejmuje następujące zadania:
- Zidentyfikuj aplikacje celujące w runtime 1.x.
- Wybierz wspierany cel dla C# lub JavaScript.
- Zaktualizuj projekt, przypisania, ustawienia aplikacji i host.json plik.
- Przetestuj aplikację lokalnie i zaktualizuj aplikację function w Azure.
Nie zmieniaj tylko FUNCTIONS_EXTENSION_VERSION ustawień aplikacji. Aktualizacje w czasie uruchomienia mogą wymagać zmian w projekcie, kodzie, bindingu i konfiguracji.
Ustawienia aplikacji specyficzne dla runtime 1.x
To AzureWebJobsDashboard przestarzałe ustawienie jest obsługiwane tylko przez runtime 1.x. Zawiera opcjonalny ogólny string konta pamięci masowej, używany do przechowywania logów i wyświetlania ich w zakładce Monitor w portalu Azure.
| Klucz | Przykładowa wartość |
|---|---|
AzureWebJobsDashboard |
DefaultEndpointsProtocol=https;AccountName=... |
Runtime 1.x nie obsługuje AZURE_FUNCTIONS_ENVIRONMENT ustawień aplikacji.
Wartość ~1 przypina FUNCTIONS_EXTENSION_VERSION aplikację funkcyjną do runtime 1.x. Domyślne jest przechowywanie kluczy w systemie plików (AzureWebJobsSecretStorageType=files).
Własność functionsRuntimeAdminIsolationEnabled strony nie jest dostępna w runtime 1.x.
FUNCTIONS_V2_COMPATIBILITY_MODE To ustawienie nie dotyczy aplikacji w runtime 1.x.
Projekt i różnice językowe
Projekty bibliotek klas C# w czasie uruchomieniowym 1.x były skierowane na framework .NET i korzystały z wersji 1.x pakietuMicrosoft.NET.Sdk.Functions. Mogliby się przydać TraceWriter do wycinki. Aktualny model projektu C# i rozważania dotyczące migracji można znaleźć w przewodniku dla deweloperów biblioteki klasy .NET oraz przewodniku po migracji w czasie rzeczywistym 1.x.
Projekty biblioteczne klasy C#
Poniższy przykład pokazuje odpowiednie części pliku projektu runtime 1.x:
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
</ItemGroup>
Zależności Microsoft.NET.Sdk.Functions pakietów obejmują wyzwalacze i powiązania. Projekt 1.x odnosi się do wyzwalaczy i wiązań 1.x, ponieważ celują one w framework .NET. Pakiet zależy również od Newtonsoft.Json i pośrednio od WindowsAzure.Storage. Te zależności zapewniają, że projekt korzysta z wersji zgodnych z docelowym środowiskiem wykonawczym Functions. Na przykład środowisko wykonawcze Functions skierowane do .NET Framework 4.6.1 jest kompatybilne z Newtonsoft.Json 9.0.1, a nie z wersją 11.
Runtime 1.x używany TraceWriter do logowania Application Insights.
TraceWriter Nie obsługuje strukturalnego logowania.
Poniższy przykład tworzy a TelemetryClient i używa TrackEvent, TrackMetric, oraz do TrackDependency zapisu niestandardowej telemetrii. Wykorzystuje także kontekst wykonania funkcji do powiązania niestandardowej telemetrii z aktualnym wywołaniem.
Przykład niestandardowej telemetrii
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
namespace functionapp0915
{
public static class HttpTrigger2
{
private static string key = TelemetryConfiguration.Active.InstrumentationKey =
Environment.GetEnvironmentVariable(
"APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);
private static TelemetryClient telemetryClient =
new TelemetryClient() { InstrumentationKey = key };
[FunctionName("HttpTrigger2")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequestMessage req, ExecutionContext context, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
DateTime start = DateTime.UtcNow;
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
dynamic data = await req.Content.ReadAsAsync<object>();
name = name ?? data?.name;
var evt = new EventTelemetry("Function called");
UpdateTelemetryContext(evt.Context, context, name);
telemetryClient.TrackEvent(evt);
var metric = new MetricTelemetry("Test Metric", DateTime.Now.Millisecond);
UpdateTelemetryContext(metric.Context, context, name);
telemetryClient.TrackMetric(metric);
var dependency = new DependencyTelemetry
{
Name = "GET api/planets/1/",
Target = "swapi.co",
Data = "https://swapi.co/api/planets/1/",
Timestamp = start,
Duration = DateTime.UtcNow - start,
Success = true
};
UpdateTelemetryContext(dependency.Context, context, name);
telemetryClient.TrackDependency(dependency);
}
private static void UpdateTelemetryContext(
TelemetryContext context,
ExecutionContext functionContext,
string userName)
{
context.Operation.Id = functionContext.InvocationId.ToString();
context.Operation.ParentId = functionContext.InvocationId.ToString();
context.Operation.Name = functionContext.FunctionName;
context.User.Id = userName;
}
}
}
Runtime 1.x obsługiwał także skrypty C# (.csx) oraz funkcje JavaScript. Skrypt C# nie jest specyficzny dla runtime 1.x, więc skorzystaj z referencji programisty skryptów C# jako ogólnych wskazówek dotyczących skryptów. Korzystaj z przewodnika migracji do zmian specyficznych dla czasu uruchomienia.
Przykłady wcześniejszej składni C# można znaleźć w szablonach funkcji 1.x w czasie rzeczywistym.
Asemblery i pakiety skryptów C#
W skryptach skryptowych 1.x w czasie rzeczywistym C# można było odwoływać się do następujących asembli pod prostą nazwą:
Newtonsoft.JsonMicrosoft.WindowsAzure.StorageMicrosoft.ServiceBusMicrosoft.AspNet.WebHooks.ReceiversMicrosoft.AspNet.WebHooks.Common
Runtime 1.x używał pliku project.json do definiowania zależności (Runtime). Poniższy przykład dodaje Microsoft.ProjectOxford.Face pakiet NuGet:
{
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Pakiety rozszerzeniowe nie są obsługiwane przez runtime 1.x. Aby użyć niestandardowego kanału NuGet, określ go w pliku NuGet.Config w folderze root aplikacji function. Aby uzyskać więcej informacji, zobacz Konfigurowanie zachowania narzędzia NuGet.
Rozwój lokalny z Core Tools 1.x
Wersja 1.x Azure Functions Core Tools jest sparowana z runtime 1.x i działa tylko na Windows. Na początek czasu pracy uruchomiłeś func host start. Aktualne lokalne wskazówki dotyczące rozwoju można znaleźć w artykule Develop Azure Functions locally using Core Tools.
Visual Studio przechowywało wersje %USERPROFILE%\AppData\Local\Azure.Functions.Cli Core Tools 1.x w czasie rzeczywistym i korzystało z najnowszej wersji tam przechowywanej. Wybraną wersję można było zobaczyć w wyjściu konsoli podczas uruchamiania projektu:
[3/1/2018 9:59:53 AM] Starting Host (HostId=contoso2-1518597420, Version=2.0.11353.0, ProcessId=22020, Debug=False, Attempt=0, FunctionsExtensionVersion=)
Runtime 1.x host.json odniesienia
Schemat i ustawieniahost.json zmieniły się po uruchomieniu 1.x. Sprawdź host.json referencję w runtime 1.x podczas przeglądu istniejącej konfiguracji i porównaj ją z aktualną host.json referencją podczas migracji.
Monitoruj aplikacje w runtime 1.x za pomocą Application Insights
Runtime 1.x wykorzystuje następujące kategorie dzienników Application Insights:
| Category | Table | Description |
|---|---|---|
Function |
Ślady | Dzienniki generowane przez użytkownika mogą być na każdym poziomie dziennika. |
Host.Aggregator |
customMetrics | Liczenia i średnie wywołań funkcji w konfigurowalnym okresie. Domyślnie to 30 sekund lub 1000 wyników, w zależności od tego, co nastąpi wcześniej. Te logi są zapisywane na Information poziomie. |
Host.Executor |
Ślady | Funkcja uruchamiała i kończyła logi. Udane przebiegi używają Information, wyjątki używają Error, a warunki takie jak wiadomości z kolejki trucizny używają .Warning |
Host.Results |
Żądania | Sukces lub porażka wykonania funkcji. Te logi są zapisywane na Information poziomie. |
Konfigurowanie poziomów dziennika
Runtime 1.x konfiguruje poziomy logów w host.jsonlogger.categoryFilter :
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Host.Results": "Information",
"Host.Aggregator": "Trace",
"Function": "Information"
}
}
}
}
Gdy wiele nazw kategorii zaczyna się od tego samego ciągu, najpierw dopasowuje się bardziej konkretną kategorię. Poniższy przykład rejestruje wszystko oprócz Host.Aggregator poziomu Error :
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
Skonfiguruj próbkowanie
Domyślna maksymalna prędkość telemetrii to pięć przedmiotów na sekundę. Runtime 1.x konfiguruje próbkowanie według :applicationInsights.sampling
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
Poniższy przykład łączy filtrowanie kategorii i próbkowanie:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Function": "Error",
"Host.Aggregator": "Error",
"Host.Results": "Information",
"Host.Executor": "Warning"
}
}
},
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
Runtime 1.x nie obsługuje konfiguracji dla każdej funkcji.
Możliwości Application Insights
Runtime 1.x automatycznie zbierał żądania, wyjątki i liczniki wydajności. Nie zbierał automatycznie zależności HTTP, Service Bus, Event Hubs ani SQL. Wspierał QuickPulse/Live Metrics bez bezpiecznego kanału sterowania i obsługiwał próbkowanie, ale nie obsługiwał korelacji z uderzeniami serca, korelacji Service Bus czy Event Hubs ani w pełni konfigurowalnego zbierania telemetrii.
Nieobsługiwane funkcje i zachowanie w czasie rzeczywistym 1.x
- Polityki powtórek nie są wspierane.
- Dynamiczne monitorowanie wyzwalaczy sieci wirtualnej nie jest obsługiwane.
- W planach Premium i dedykowanych domyślny limit czasu wykonania funkcji jest nieograniczony. W planie Consumption domyślny czas na przerwę to pięć minut, a maksymalnie 10 minut.
- Aplikacja funkcjonalna korzystająca z pakietu zdalnego wdrożenia nie może działać bez udostępnienia Azure Files.
Przypisania zawarte w runtime 1.x
Azure Functions runtime 1.x jest wycofany. Podczas migracji do runtime 4.x użyj aktualnych rozszerzeń wiązań lub pakietu rozszerzeniowego i przejrzyj każde powiązanie pod kątem zmian konfiguracji i typu.
Następujące przypisania zostały dołączone do runtime 1.x. Kolumna atrybutów C# pokazuje krótkie nazwy używane w kodzie. Odpowiadające im nazwy klas mają Attribute sufiks, na przykład .BlobTriggerAttribute Funkcje skryptowe C# zamiast tego definiują przypisania w pliku function.json .
| Typ | Trigger | Wprowadzanie danych | Wynik | Atrybuty C# |
|---|---|---|---|---|
| Blob Storage | Yes | Yes | Yes |
[BlobTrigger] (wyzwalacz)[Blob] (wejście/wyjście) |
| Azure Cosmos DB | Yes | Yes | Yes |
[CosmosDBTrigger] (wyzwalacz)[DocumentDB] (wejście/wyjście) |
| Event Grid | Yes | No | No | [EventGridTrigger] |
| Event Hubs | Yes | No | Yes |
[EventHubTrigger] (wyzwalacz)[EventHub] (wyjście) |
| HTTP i webhooks | Yes | No | Yes | [HttpTrigger] |
| IoT Hub | Yes | No | No | [EventHubTrigger] |
| Aplikacje mobilne | No | Yes | Yes | [MobileTable] |
| Centra powiadomień | No | No | Yes | [NotificationHub] |
| Magazynowanie Kolejki | Yes | No | Yes |
[QueueTrigger] (wyzwalacz)[Queue] (wyjście) |
| SendGrid | No | No | Yes | [SendGrid] |
| Service Bus | Yes | No | Yes |
[ServiceBusTrigger] (wyzwalacz)[ServiceBus] (wyjście) |
| Przechowywanie stołów | No | Yes | Yes | [Table] |
| Minutnik | Yes | No | No | [TimerTrigger] |
| Twilio | No | No | Yes | [TwilioSms] |
Aplikacje funkcjonalne korzystające z runtime 1.x automatycznie odwołują się do pakietu Microsoft.Azure. WebJobs NuGet (wersja 2.x).
Wyzwalacze i powiązania Blob Storage, Queue Storage oraz Table Storage wykorzystują wersję 7.2.1 pakietu WindowsAzure.Storage NuGet. Jeśli odniesiesz się do innej wersji SDK pamięci i powiesz ją do typu SDK pamięci w sygnaturze funkcji, środowisko uruchomienia Functions może zgłosić, że nie może się powiązać z tym typem. Upewnij się, że Twój projekt odnosi się do WindowsAzure.Storage 7.2.1.
Powiązania Blob Storage w runtime 1.x
Runtime 1.x ujawnił typy z przestarzałego Microsoft. WindowsAzure.Storage przestrzeń nazw. Nowsze typy z Azure. Storage.Blobs wymagają późniejszego rozszerzenia i runtime 4.x.
Powiązania Queue Storage w czasie rzeczywistym 1.x
Runtime 1.x ujawnił typy z przestarzałego Microsoft. WindowsAzure.Storage przestrzeń nazw. Nowsze typy z Azure. Storage. Kolejki wymagają późniejszego rozszerzenia i uruchomienia 4.x.
Aby poznać ustawienia wiązania Queue Storage, zobacz sekcję kolejek w runtime 1.x host.json referencji. W runtime 1.x maxPollingInterval ustawienie wyraża się w milisekundach. W późniejszych wersjach uruchomieniowych jego typ danych to TimeSpan.
Powiązania Table Storage w czasie rzeczywistym 1.x
Runtime 1.x ujawnił typy z przestarzałego Microsoft. Przestrzeń nazw WindowsAzure.Storage.Table. Nowsze typy z Azure. Data.Tables wymagają rozszerzenia Azure Tables i uruchomienia 4.x.
Przykłady danych wejściowych
Następująca funkcja C# odczytuje pojedynczy wiersz tabeli. Dla każdej wiadomości wysyłanej do kolejki funkcja jest wyzwalana. Wartość {queueTrigger} klucza wiersza wiąże klucz wiersza z metadanymi komunikatu, czyli ciągiem komunikatu.
public class TableStorage
{
public class MyPoco
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition", "{queueTrigger}")] MyPoco poco,
ILogger log)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
Następująca funkcja C# odczytuje wiele wierszy tabeli, z których klasa MyPoco pochodzi z .TableEntity
public class TableStorage
{
public class MyPoco : TableEntity
{
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition")] IQueryable<MyPoco> pocos,
ILogger log)
{
foreach (MyPoco poco in pocos)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
}
Wykorzystanie wejścia
Aby zwrócić określoną jednostkę według klucza, użyj parametru powiązania pochodzącego z tabeli TableEntity. Specyficzne TableName, PartitionKey, i RowKey są używane do próby uzyskania konkretnej jednostki z tabeli.
Aby wykonać zapytania zwracające wiele jednostek, powiąż z typem IQueryable<T> , który dziedziczy z tabeli TableEntity.
Wykorzystanie wydruku
Następujące typy są obsługiwane w przypadku out parametrów i typów zwracanych:
- Zwykły obiekt CLR (POCO), który zawiera
PartitionKeywłaściwości iRowKey. Te właściwości można towarzyszyć przez zaimplementowanieITableEntitylub dziedziczenieTableEntity. -
ICollector<T>lubIAsyncCollector<T>gdzieTzawieraPartitionKeywłaściwości iRowKey. Te właściwości można towarzyszyć przez zaimplementowanieITableEntitylub dziedziczenieTableEntity.
Można również powiązać z CloudTablezestawem SDK usługi Storage jako parametrem metody. Następnie możesz użyć tego obiektu do zapisania w tabeli.
Powiązania Event Hubs w czasie rzeczywistym 1.x
Runtime 1.x zawierał powiązanie Event Hubs i nie wymagał osobnego rozszerzenia. Ujawnił przestarzały typ Microsoft.Azure. EventHubs.EventData. Obsługiwane EventDatasą wyzwalacze Event Hubs , typy serializowane JSON- string, , oraz byte[] dla pojedynczego zdarzenia, oraz EventData[] i string[] dla partii. Wiązania wyjściowe obsługiwane EventData, typy serializowalne przez JSON, string, oraz byte[].
Dla wyzwalacza lub wiązania wyjścia Event Hubs w function.json, runtime 1.x używa path tej właściwości nazwy centrum zdarzeń. Późniejsze wersje wykonawcze używają eventHubName. Gdy nazwa centrum zdarzeń jest również obecna w parametry połączenia, ta wartość nadpisuje tę właściwość w czasie wykonywania.
Plik host.json w czasie rzeczywistym 1.x wykorzystuje obiekt najwyższego poziomu eventHub :
{
"eventHub": {
"maxBatchSize": 64,
"prefetchCount": 256,
"batchCheckpointFrequency": 1
}
}
| Property | Default | Description |
|---|---|---|
maxBatchSize |
64 | Maksymalna liczba odebranych zdarzeń na pętlę odbierania. |
prefetchCount |
300 | Domyślna liczba wstępnego pobierania używana przez bazowy EventProcessorHostelement . |
batchCheckpointFrequency |
1 | Liczba partii zdarzeń do przetworzenia przed utworzeniem punktu kontrolnego kursora usługi Event Hubs. |
Pełną referencję konfiguracyjną można eventHub znaleźć w sekcji host.json czasie wykonywania 1.x.
Powiązania Event Grid w czasie wykonywania 1.x
Wersje rozszerzenia Event Grid starsze niż 3.x nie obsługują schematu CloudEvents. Aby wykorzystać ten schemat, użyj wyzwalacza HTTP lub przenieś się do czasów uruchomieniowych 4.x i rozszerzenia Event Grid 3.x.
Wiązanie wyjściowe Event Grid jest dostępne tylko dla czasów uruchomieniowych 2.x i nowszych.
Typy powiązań
Rozszerzenie 1.x w czasie rzeczywistym obsługuje następujące typy parametrów. Nie obsługuje schematu CloudEvents, który wymaga rozszerzenia Event Grid 3.x.
| Binding | Typy parametrów |
|---|---|
| Wyzwalacz Event Grid | Newtonsoft.Json.Linq.JObjectstring |
Użycie wyzwalacza
Funkcje biblioteki klas C# w trakcie procesu obsługują następujące typy wyzwalaczy Event Grid:
Newtonsoft.Json.Linq.JObjectSystem.String
Punkt końcowy Webhook i klucz systemowy
Hostowany endpoint webhook dla wyzwalacza Event Grid 1.x w czasie rzeczywistym korzysta z następującego wzoru URL:
https://{functionappname}.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName={functionname}&code={systemkey}
Aby uzyskać klucz systemowy Event Grid z API administratora, użyj klucza głównego aplikacji function w następującym żądaniu:
https://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgridextensionconfig_extension?code={masterkey}
Do testów lokalnych endpoint wyzwalacza Event Grid używa następującego wzorca URL:
http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName={FUNCTION_NAME}
Powiązania Service Bus w czasie wykonywania 1.x
Runtime 1.x ujawnił typy z przestarzałego Microsoft. ServiceBus.Messaging przestrzeń nazw. Nowsze typy z Azure. Messaging.ServiceBus wymaga rozszerzenia Service Bus 5.x lub nowszego oraz runtime 4.x.
30 września 2026 roku biblioteki SDK Azure Service Bus będą zawierać WindowsAzure.ServiceBus, Microsoft.Azure. ServiceBus oraz com.microsoft.azure. Servicebus zostanie wycofany. Te biblioteki nie spełniają wytycznych Azure SDK. Wsparcie dla Service Bus Messaging Protocol (SBMP) również się zakończy. Chociaż po przejściu na emeryturę można nadal korzystać ze starszych bibliotek, nie będą one już otrzymywać oficjalnego wsparcia i aktualizacji od Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.
Użycie wyzwalacza
Wyzwalacz wiadomości kolejka lub tematu obsługuje następujące typy parametrów:
- BrokeredMessage dostarcza zdeserializowaną wiadomość metodą BrokeredMessage.GetBody<T>().
-
MessageReceiver odbiera i potwierdza wiadomości z kontenera wiadomości. Ten typ jest wymagany, gdy
autoCompletejest ustawiony na .false
W bibliotekach klas C# konstruktor atrybutu przyjmuje nazwę kolejki lub tematu oraz subskrypcję. Możesz też określić prawa dostępu do połączenia. Jeśli nie określisz praw dostępu, wartość domyślna to Manage.
Wybór konta Service Bus
Użyj atrybutu ServiceBusAccountAttribute do określenia konta Service Bus. Konstruktor przyjmuje nazwę ustawienia aplikacji, które zawiera Service Bus parametry połączenia. Zastosuj atrybut na poziomie parametrów, metody lub klasy. Poniższy przykład pokazuje atrybuty na poziomie klasy i metody:
[ServiceBusAccount("ClassLevelServiceBusAppSetting")]
public static class AzureFunctions
{
[ServiceBusAccount("MethodLevelServiceBusAppSetting")]
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage)]
string myQueueItem, ILogger log)
{
// ...
}
}
Poniższa kolejność określa, którego konta Service Bus użyć:
-
ServiceBusTriggerWłaściwość atrybutuConnection. - Atrybut
ServiceBusAccountzastosowany do tego samego parametruServiceBusTriggerco atrybut. - Atrybut
ServiceBusAccountzastosowany do funkcji. - Atrybut
ServiceBusAccountzastosowany do klasy. - Ustawienie
AzureWebJobsServiceBusaplikacji.
Metadane komunikatu
Poniższe właściwości należą do klas BrokeredMessage i MessageReceiver .
| Property | Typ | Description |
|---|---|---|
ContentType |
string |
Identyfikator typu treści używany przez nadawcę i odbiorcę do logiki specyficznej dla aplikacji. |
CorrelationId |
string |
Identyfikator korelacji. |
DeadLetterSource |
string |
Źródło bez śladu. |
DeliveryCount |
Int32 |
Liczba dostaw. |
EnqueuedTimeUtc |
DateTime |
Czas w kolejce w Skoordynowanym Czasie Uniwersalnym (UTC). |
ExpiresAtUtc |
DateTime |
Czas wygaśnięcia w formacie UTC. |
Label |
string |
Etykieta specyficzna dla aplikacji. |
MessageId |
string |
Wartość zdefiniowana przez użytkownika, która Service Bus może służyć do identyfikowania zduplikowanych komunikatów, jeśli jest włączona. |
MessageReceiver |
MessageReceiver |
Service Bus odbiornik komunikatów. Może być użyty do porzucenia, ukończenia lub martwego litery wiadomości. |
MessageSession |
MessageSession |
Odbiornik komunikatów przeznaczony specjalnie dla kolejek i tematów z obsługą sesji. |
ReplyTo |
string |
Adres kolejki odpowiedzi. |
SequenceNumber |
long |
Unikatowy numer przypisany do komunikatu przez usługę Service Bus. |
To |
string |
Adres do wysłania. |
UserProperties |
IDictionary<string, object> |
Właściwości ustawione przez nadawcę. |
Wykorzystanie wydruku
Użyj typu BrokeredMessage podczas wysyłania komunikatów z metadanymi. Zdefiniuj parametry jako atrybuty return typu. Jeśli wartość parametru jest null, gdy funkcja kończy działalność, Funkcje nie tworzą komunikatu.
Dla function.json wiązań akceptuje accessRightsmanage lub listen i domyślnie przyjmuje .manage Jeśli parametry połączenia nie ma uprawnień Zarządzaj, ustaw accessRights tak, listen aby uniemożliwić uruchomieniu przez środowisko uruchomieniowe próby operacji zarządzania.
Runtime tworzy kolejkę, jeśli nie istnieje i ustawiasz accessRights na manage.
Ustawienia hosta
Ustawienia Service Bus bindingu znajdziesz w runtime 1.x host.json referencji.
Wiązania HTTP i webhook w czasie uruchomienia 1.x
Funkcja wyzwalana przez HTTP domyślnie zwraca HTTP 200 OK z pustym ciałem. Późniejsze wersje wykonawcze powracają HTTP 204 No Content.
Dla wyzwalacza HTTP w function.json, użyj webHookType tej właściwości, aby skonfigurować wyzwalacz jako odbiornik webhooka dla określonego dostawcy. Ta własność jest specyficzna dla runtime 1.x.
Runtime 1.x nie obsługuje dostępu do uwierzytelnionych informacji klienta.
Tryb Webhook
Szablony Webhooków zapewniają dodatkową weryfikację dla ładunków webhook. Właściwość wiązania webHookType pokazuje dostawcę webhooka i kontroluje obsługiwany ładunek danych:
| Wartość typu | Description |
|---|---|
genericJson |
Punkt końcowy elementu webhook ogólnego przeznaczenia bez logiki dla określonego dostawcy. To ustawienie ogranicza żądania do HTTP POST z typem application/json treści. |
github |
Funkcja odpowiada na elementy webhook usługi GitHub. Nie używaj authLevel właściwości z elementami webhook usługi GitHub. |
slack |
Funkcja odpowiada na elementy webhook usługi Slack. Nie używaj authLevel właściwości z elementami webhook usługi Slack. |
Gdy ustawiasz webHookType, nie ustawiaj methods właściwości.
Aby odpowiedzieć na webhooki GitHub, stwórz funkcję z wyzwalaczem HTTP, ustaw webHookType na github, i skopiuj jej adres URL oraz klucz API na stronę Dodaj webhook w repozytorium GitHub.
Webhook Slack generuje token, więc konfiguruj z tym tokenem klucz specyficzny dla funkcji.
Komponent odbiornika webhooka obsługuje autoryzację webhooków. Mechanizm różni się w zależności od typu webhooka, ale każdy mechanizm opiera się na kluczu. Domyślnie używany jest klawisz funkcyjny o nazwie default . Aby użyć innego klucza, skonfiguruj dostawcę webhooka tak, aby wysyłał nazwę klucza w jeden z następujących sposobów:
- W parametrze
clientidzapytania, takim jakhttps://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>. - W nagłówku
x-functions-clientidżądania.
Aby poznać ustawienia wiązania HTTP, zobacz sekcję HTTP w środowisku uruchomieniowym 1.x host.json referencji.
Wyzwalacz rozgrzewki w czasie uruchomienia 1.x
Runtime 1.x nie obsługuje wyzwalacza rozgrzewki.
Powiązanie SendGrid w czasie uruchomieniowym 1.x
Dodaj rozszerzenie do projektu, instalując pakiet NuGet w wersji 2.x.
Aby poznać ustawienia wiązania SendGrid, zobacz sekcję SendGrid w środowisku uruchomieniowym 1.x host.json źródła.
Binding Twilio w runtime 1.x
Dodaj rozszerzenie do projektu, instalując pakiet NuGet w wersji 1.x.
Dla runtime 1.x użyj następujących właściwości konfiguracji wiązania w pliku function.json :
| właściwość function.json | Description |
|---|---|
| type | Ustaw wartość twilioSms. |
| direction | Ustaw wartość out. |
| name | Nazwa zmiennej używana w kodzie funkcji dla wiadomości SMS usługi Twilio. |
| accountSid | Ustaw nazwę ustawienia aplikacji, które przechowuje Sid Twojego konta Twilio (TwilioAccountSid). Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsTwilioAccountSid. |
| authToken | Ustaw nazwę ustawienia aplikacji, które przechowuje Twój token uwierzytelniania Twilio (TwilioAccountAuthToken). Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsTwilioAuthToken. |
| do | Ustaw numer telefonu, na który wysyłany jest SMS. |
| z | Ustaw numer telefonu, z którego wysyłany jest SMS. |
| body | Użyj do twardego kodowania wiadomości tekstowej, jeśli nie musisz jej dynamicznie ustawiać w kodzie dla swojej funkcji. |
Korzystaj z zachowanych informacji o wiążeniu z tego artykułu tylko do zrozumienia istniejącej aplikacji. Stosuj się do przewodnika migracji w czasie rzeczywistym oraz aktualnej dokumentacji wiązającej przy aktualizacji aplikacji.
Często zadawane pytania
Czy Azure Functions w runtime 1.x jest nadal obsługiwany?
Nie. Wsparcie dla Azure Functions runtime 1.x zakończyło się 14 września 2026 roku. Migruj dotknięte aplikacje do runtime 4.x, aby zapewnić pełne wsparcie.
Czy model programistyczny Python v1 lub Node.js v4 korzysta z runtime 1.x?
Nie. Wersje modeli programowania językowego są niezależne od wersji wykonawczej. Modele programistyczne Python v1 i v2 oraz modele Node.js v3 i v4 działają na runtime 4.x.