Code en test Azure Functions lokaal
Hoewel u in de Azure Functions kunt ontwikkelen en Azure Portal, geven veel [ontwikkelaars]de voorkeur aan een lokale ontwikkelervaring. Met Functions kunt u eenvoudig uw favoriete code-editor en ontwikkelhulpprogramma's gebruiken om functies op uw lokale computer te maken en te testen. Uw lokale functies kunnen verbinding maken met live Azure-services en u kunt fouten opsporen op uw lokale computer met behulp van de volledige Functions-runtime.
Dit artikel bevat koppelingen naar specifieke ontwikkelomgevingen voor de taal van uw voorkeur. Het bevat ook enkele gedeelde richtlijnen voor lokale ontwikkeling, zoals het werken met de local.settings.jsop bestand.
Lokale ontwikkelomgevingen
De manier waarop u functies op uw lokale computer ontwikkelt, is afhankelijk van uw taal en voorkeuren voor hulpprogramma's. De omgevingen in de volgende tabel ondersteunen lokale ontwikkeling:
| Omgeving | Talen | Description |
|---|---|---|
| Visual Studio Code | C# (klassebibliotheek) C#-geïsoleerd proces (.NET 5.0) JavaScript PowerShell Python |
Met Azure Functions-extensie voor VS Code wordt ondersteuning voor Functions toegevoegd aan VS Code. Vereist de Core Tools. Ondersteunt ontwikkeling op Linux, macOS en Windows, wanneer u versie 2.x van de Core Tools gebruikt. Zie Uw eerste functie maken met behulp van Visual Studio Code voor meer informatie. |
| Opdrachtprompt of terminal | C# (klassebibliotheek) C#-geïsoleerd proces (.NET 5.0) JavaScript PowerShell Python |
Azure Functions Core Tools bevat de belangrijkste runtime en sjablonen voor het maken van functies, die lokale ontwikkeling mogelijk maken. Versie 2.x ondersteunt ontwikkeling op Linux, macOS en Windows. Alle omgevingen zijn afhankelijk van Core Tools voor de lokale Functions-runtime. |
| Visual Studio 2019 | C# (klassebibliotheek) C#-geïsoleerd proces (.NET 5.0) |
De Azure Functions zijn opgenomen in de Azure-ontwikkelworkload van Visual Studio 2019 en latere versies. Hiermee kunt u functies compileren in een klassebibliotheek en de .dll publiceren naar Azure. Bevat de Core Tools voor lokaal testen. Zie Develop Azure Functions using Visual Studio (Een Visual Studio) voor meer Visual Studio. |
| Maven (diverse) | Java | Het Maven-archetype ondersteunt Core Tools om de ontwikkeling van Java-functies mogelijk te maken. Versie 2.x ondersteunt ontwikkeling op Linux, macOS en Windows. Zie Uw eerste functie maken met Java en Maven voor meer informatie. Ondersteunt ook ontwikkeling met behulp van Eclipse en IntelliJ IDEA |
Belangrijk
Combineer geen lokale ontwikkeling met portal-ontwikkeling in dezelfde functie-app. Wanneer u functies maakt en publiceert vanuit een lokaal project, moet u niet proberen projectcode in de portal te onderhouden of te wijzigen.
Met elk van deze lokale ontwikkelomgevingen kunt u functie-app-projecten maken en vooraf gedefinieerde Functions-sjablonen gebruiken om nieuwe functies te maken. Elk hulpprogramma maakt gebruik van de Core Tools, zodat u uw functies kunt testen en fouten kunt opsporen in de echte Functions-runtime op uw eigen computer, net zoals u elke andere app zou doen. U kunt uw functie-app-project ook vanuit een van deze omgevingen publiceren naar Azure.
Lokale instellingsbestand
In local.settings.jsbestand worden app-instellingen en -instellingen opgeslagen die worden gebruikt door lokale ontwikkelhulpprogramma's. Instellingen in de local.settings.jsin het bestand worden alleen gebruikt wanneer u uw project lokaal hebt uitgevoerd.
Belangrijk
Omdat de local.settings.jsmogelijk geheimen bevat, zoals verbindingsreeksen, moet u deze nooit opslaan in een externe opslagplaats. Hulpprogramma's die ondersteuning bieden voor Functions bieden manieren om instellingen in de local.settings.jste synchroniseren met de app-instellingen in de functie-app waarop uw project is geïmplementeerd.
Het bestand met lokale instelling heeft de volgende structuur:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
Deze instellingen worden ondersteund wanneer u projecten lokaal uitvoert:
| Instelling | Beschrijving |
|---|---|
IsEncrypted |
Wanneer deze instelling is ingesteld op true, worden alle waarden versleuteld met een lokale machinesleutel. Gebruikt met func settings-opdrachten. De standaardwaarde is false. Mogelijk wilt u het bestand local.settings.json versleutelen op uw lokale computer wanneer het geheimen bevat, zoals serviceverbindingsreeksen. De host ontsleutelt de instellingen automatisch wanneer deze wordt uitgevoerd. Gebruik de opdracht func settings decrypt voordat u lokaal versleutelde instellingen probeert te lezen. |
Values |
Verzameling toepassingsinstellingen die worden gebruikt wanneer een project lokaal wordt uitgevoerd. De sleutelwaardeparen (tekenreeks-tekenreeks) corresponderen met toepassingsinstellingen in uw functie-app in Azure, zoals [AzureWebJobsStorage]. Veel triggers en bindingen hebben een eigenschap die verwijst naar een app-instelling voor verbindingsreeksen, bijvoorbeeld Connection voor Blob-opslagtrigger. Voor deze eigenschappen hebt u een toepassingsinstelling nodig die is gedefinieerd in de matrix Values. Bekijk de onderliggende tabel voor een lijst met veelgebruikte instellingen. Waarden moeten tekenreeksen zijn en geen JSON-objecten of matrices. Instellingsnamen kunnen geen dubbele punt ( :) bevatten of een dubbel onderstrepingsteken (__). Dubbele onderstrepingstekens worden gereserveerd tijdens de runtime en de dubbele punt is gereserveerd voor afhankelijkheidsinjectie. |
Host |
Met de instellingen in dit gedeelte wordt het Functions-hostproces aangepast wanneer u projecten lokaal uitvoert. Deze instellingen staan los van de host.json-instellingen, die ook van toepassing zijn wanneer u projecten uitvoert in Azure. |
LocalHttpPort |
Hiermee stelt u de standaardpoort in die wordt gebruikt wanneer de lokale Functions-host wordt uitgevoerd (func host start en func run). De opdrachtregeloptie --port heeft voorrang op deze instelling. Wanneer u bijvoorbeeld in Visual Studio IDE wordt uitgevoerd, kunt u het poortnummer wijzigen door te navigeren naar het venster 'Project Properties -> Debug' en expliciet het poortnummer op te geven in een opdracht die kan worden opgegeven in het veld host start --port <your-port-number> Toepassingsargumenten. |
CORS |
Definieert de oorsprong die is toegestaan voor CORS (Cross-origin-resource delen). Oorsprongen worden aangeleverd als een door komma's gescheiden lijst zonder spaties. De jokertekenwaarde (*) wordt ondersteund, waarmee verzoeken van elke oorsprong toegestaan zijn. |
CORSCredentials |
Als deze instelling is ingesteld op true, zijn withCredentials-verzoeken toegestaan. |
ConnectionStrings |
Een verzameling. Gebruik deze verzameling niet voor de verbindingsreeksen die worden gebruikt door uw functiebindingen. Deze verzameling wordt alleen gebruikt door frameworks die doorgaans een verbindingsreeks krijgen van het gedeelte ConnectionStrings van een configuratiebestand, bijvoorbeeld Entity Framework. Verbindingsreeksen in dit object zijn toegevoegd aan de omgeving met het providertype van System.Data.SqlClient. Items in deze verzameling worden niet gepubliceerd naar Azure met andere app-instellingen. U moet deze waarden expliciet toevoegen aan de verzameling Connection strings van de instellingen van uw functie-app. Als u een SqlConnection maakt in uw functiecode, moet u de verbindingsreekswaarde bewaren met uw andere verbindingen in Toepassingsinstellingen in de portal. |
De volgende toepassingsinstellingen kunnen worden opgenomen in de matrix Values wanneer deze lokaal wordt uitgevoerd:
| Instelling | Waarden | Beschrijving |
|---|---|---|
AzureWebJobsStorage |
Verbindingsreeks van opslagaccount ofUseDevelopmentStorage=true |
Bevat de verbindingsreeks voor een Azure-opslagaccount. Vereist wanneer andere triggers dan HTTP worden gebruikt. Raadpleeg de referentie [AzureWebJobsStorage] voor meer informatie.Wanneer u de Azure Storage-emulator lokaal hebt geïnstalleerd en u [ AzureWebJobsStorage] hebt ingesteld op UseDevelopmentStorage=true, gebruikt Core Tools de emulator. De emulator is nuttig tijdens ontwikkeling, maar u moet testen met een echte opslagverbinding voor de implementatie. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true|false |
Als u een functie wilt uitschakelen wanneer u lokaal iets uitvoert, voegt u "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" toe aan de verzameling, waar <FUNCTION_NAME> de naam van de functie is. Raadpleeg voor meer informatie Functies uitschakelen in Azure Functions |
FUNCTIONS_WORKER_RUNTIME |
dotnetnodejavapowershellpython |
Geeft de doeltaal van de Functions-runtime aan. Vereist voor versie 2.x en hoger van de Functions-runtime. Deze instelling wordt gegenereerd voor uw project door Core Tools. Raadpleeg de referentie FUNCTIONS_WORKER_RUNTIME voor meer informatie. |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
Geeft aan dat PowerShell 7 moet worden gebruikt bij lokaal uitvoeren. Zo niet, dan wordt PowerShell Core 6 gebruikt. Deze instelling wordt alleen gebruikt bij lokaal uitvoeren. Wanneer u in Azure uitvoert, wordt de PowerShell-runtimeversie bepaald door de siteconfiguratie-instelling powerShellVersion, die in de portal kan worden ingesteld. |
Volgende stappen
- Zie Develop Azure Functions using Visual Studiovoor meer informatie over de lokale ontwikkeling van gecompileerde C#-functies met behulp van Visual Studio 2019.
- Zie het artikel aan de slag met Visual Studio Code voor uw voorkeurstaal voor meer informatie over het lokaal ontwikkelen van functies met VS Code op een Mac-, Linux- of Windows-computer:
- Zie Werken met Azure Functions Core Tools voor meer informatie over het ontwikkelen van functies vanaf de opdrachtprompt of terminal.