Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Functions kan utlösas på en Dapr-tjänstanrop med hjälp av följande Dapr-händelser.
Information om installation och konfiguration av Dapr-tillägget finns i översikten över Dapr-tillägget.
Example
En C#-funktion kan skapas med något av följande C#-lägen:
| Execution model | Description | 
|---|---|
| Isolerad arbetsmodell | Funktionskoden körs i en separat .NET-arbetsprocess. Använd med versioner av .NET och .NET Framework som stöds. Mer information finns i Guide för att köra C# Azure Functions i den isolerade arbetsmodellen. | 
| In-process model | Funktionskoden körs i samma process som värdprocessen för Functions. Stöder endast LTS-versioner (Long Term Support) av .NET. Mer information finns i Utveckla C#-klassbiblioteksfunktioner med Hjälp av Azure Functions. | 
[FunctionName("CreateNewOrder")]
public static void Run(
    [DaprServiceInvocationTrigger] JObject payload,
    [DaprState("%StateStoreName%", Key = "order")] out JToken order,
    ILogger log)
{
    log.LogInformation("C# function processed a CreateNewOrder request from the Dapr Runtime.");
    // payload must be of the format { "data": { "value": "some value" } }
    order = payload["data"];
}
Här är Java-koden för Utlösaren för anrop av Dapr-tjänsten:
@FunctionName("CreateNewOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "CreateNewOrder") 
)
Använd - app objektet för att registrera daprInvokeOutput:
const { app, trigger } = require('@azure/functions');
app.generic('InvokeOutputBinding', {
    trigger: trigger.generic({
        type: 'httpTrigger',
        authLevel: 'anonymous',
        methods: ['POST'],
        route: "invoke/{appId}/{methodName}",
        name: "req"
    }),
    return: daprInvokeOutput,
    handler: async (request, context) => {
        context.log("Node HTTP trigger function processed a request.");
        const payload = await request.text();
        context.log(JSON.stringify(payload));
        return { body: payload };
    }
});
The following examples show Dapr triggers in a function.json file and PowerShell code that uses those bindings.
Here's the function.json file for daprServiceInvocationTrigger:
{
  "bindings": [
    {
      "type": "daprServiceInvocationTrigger",
      "name": "payload",
      "direction": "in"
    }
  ]
}
For more information about function.json file properties, see the Configuration section.
In code:
using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq
param (
    $payload
)
# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a CreateNewOrder request from the Dapr Runtime."
# Payload must be of the format { "data": { "value": "some value" } }
# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $payload| ConvertTo-Json
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name order -Value $payload["data"]
I följande exempel visas en Dapr Service Invocation-utlösare som använder programmeringsmodellen v2 Python. Så här använder daprServiceInvocationTrigger du i din Python-funktionsappkod:
import logging
import json
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="RetrieveOrder")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveOrder")
@app.dapr_state_input(arg_name="data", state_store="statestore", key="order")
def main(payload, data: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveOrder  --data '{}'
    logging.info('Python function processed a RetrieveOrder request from the Dapr Runtime.')
    logging.info(data)
Attributes
In the in-process model, use the DaprServiceInvocationTrigger to trigger a Dapr service invocation binding, which supports the following properties.
| Parameter | Description | 
|---|---|
| MethodName | Optional. Namnet på den metod som Dapr-anroparen ska använda. Om det inte anges används namnet på funktionen som metodnamn. | 
Annotations
Med anteckningen DaprServiceInvocationTrigger kan du skapa en funktion som anropas av Dapr-körning.
| Element | Description | 
|---|---|
| methodName | Metodnamnet. | 
Configuration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i koden.
| Property | Description | 
|---|---|
| type | Måste anges till daprServiceInvocationTrigger. | 
| name | Namnet på variabeln som representerar Dapr-data i funktionskoden. | 
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.
| function.json property | Description | 
|---|---|
| type | Måste anges till daprServiceInvocationTrigger. | 
| name | Namnet på variabeln som representerar Dapr-data i funktionskoden. | 
See the Example section for complete examples.
Usage
Om du vill använda en Dapr-tjänstanropsutlösare kan du läsa mer om vilka komponenter som ska användas med utlösaren för tjänstanrop och hur du konfigurerar dem i den officiella Dapr-dokumentationen.
Om du vill använda daprServiceInvocationTrigger i Python v2 konfigurerar du projektet med rätt beroenden.
- requirements.textLägg till följande rad i filen:- azure-functions==1.18.0b3
- Installera Python-biblioteket i terminalen. - pip install -r .\requirements.txt
- local.setting.jsonÄndra filen med följande konfiguration:- "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1