2017-11-23 8 views
3

Ich möchte, dass eine Http Trigger-Funktion eine andere Http Trigger-Funktion aufrufen. Grundsätzlich versuche ich über die URL (HTTP-Anfrage) den Trigger 1 zu erreichen, welcher Trigger 1 Trigger 2 aufrufen wird. Was ich denke ist, die Fix-URL für Trigger 2 zu setzen, also rufe einfach Trigger 1 an. Irgendwelche Ideen, wie man das macht?Azure Http Triggers Funktionsaufrufe

using System.Net; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    log.Info("C# HTTP trigger function processed a request."); 

    // parse query parameter 
    string name = req.GetQueryNameValuePairs() 
     .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) 
     .Value; 

    // Get request body 
    dynamic data = await req.Content.ReadAsAsync<object>(); 

    // Set name to query string or body data 
    name = name ?? data?.name; 

    return name == null 
     ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 
     : req.CreateResponse(HttpStatusCode.OK, "Hello " + name); 
} 

Jede Hilfe wird sehr geschätzt.

+0

mit Webrequest sollte es funktionieren? Ich habe versucht, funktioniert aber nicht –

+0

Fügen Sie kein Standardbeispiel in Ihre Antwort ein. Zeigen Sie stattdessen, was Sie selbst versucht haben, um dieses Problem zu lösen. – Mikhail

+0

Ich habe versucht WebRequest webRequest = WebRequest.Create ("https://testing.azurewebsites.net/api/HttpTriggerCSharp1?name=testing"); WebResponse webResp = webRequest.GetResponse(); –

Antwort

2

Sie können HttpClient verwenden, um eine normale HTTP-Anfrage auszuführen. Hier ist, wie die aufrufende Funktion aussehen könnte:

static HttpClient client = new HttpClient(); 
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req) 
{ 
    var url = "https://<functionapp>.azurewebsites.net/api/Function2?code=<code>"; 
    var response = await client.GetAsync(url); 
    string result = await response.Content.ReadAsStringAsync(); 
    return req.CreateResponse(HttpStatusCode.OK, "Function 1 " + result); 
} 
+0

Fehler CS1061: 'HttpResponseMessage' enthält keine Definition für 'Inhalt' und keine Erweiterungsmethode 'Inhalt' konnte ein erstes Argument vom Typ 'HttpResponseMessage' gefunden werden (fehlt eine using-Direktive oder eine Assemblyreferenz?) –

+0

using System.Net; mit System.Net.Http; mit System.Web.Http.Controllers; statischer HttpClient client = new HttpClient(); öffentliche statische asynchrone Task Ausführen (HttpRequestMessage-Anforderung) { var url = "https: //"; var response = erwarten client.GetAsync (url); string result = erwarten response.Content.ReadAsStringAsync(); Rückgabe Request.CreateResponse (HttpStatusCode.OK, "Funktion 1" + Ergebnis); } –

+0

Ich habe oben in azure Funktionen immer noch einen Fehler versucht. Kannst du mir bitte helfen? –