Partager via


Utiliser le proxy de développement avec .NET Azure Functions

Si vous générez Azure Functions à l’aide de .NET et souhaitez utiliser le proxy de développement, suivez les instructions générales relatives à l’utilisation du proxy de développement avec des applications .NET.

Important

Pour empêcher Azure Functions d’échouer au démarrage, démarrez le proxy de développement sans l’inscrire en tant que proxy système à l’aide de l’option --as-system-proxy false ou en configurant asSystemProxy sur false le devproxyrc.json fichier. Si vous inscrivez le proxy de développement en tant que proxy système, Azure Functions échoue au démarrage avec un message d’erreur similaire à :

Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: Requesting HTTP version 2.0 with version policy RequestVersionOrHigher while unable to establish HTTP/2 connection.", DebugException="System.Net.Http.HttpRequestException: Requesting HTTP version 2.0 with version policy RequestVersionOrHigher while unable to establish HTTP/2 connection.")'

Pour pouvoir facilement basculer entre l’utilisation du proxy de développement dans le développement et ne pas l’utiliser en production, vous pouvez configurer le proxy dans votre application Azure Functions à l’aide de variables d’environnement. Modifiez le local.settings.json fichier pour inclure la variable d’environnement HTTPS_PROXY .

{
  "IsEncrypted": false,
  "Values": {
    "HTTPS_PROXY": "http://127.0.0.1:8000"
  }
}

HttpClient dans .NET récupère automatiquement la HTTPS_PROXY variable d’environnement et l’utilise pour configurer le proxy pour les requêtes HTTP sortantes.

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace dotnet_azure_fn;

public class MyFn(ILogger<MyFn> logger, IHttpClientFactory httpClientFactory)
{
    private readonly ILogger<MyFn> _logger = logger;
    private readonly HttpClient _httpClient = httpClientFactory.CreateClient();

    [Function("MyFn")]
    public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
    {
        _logger.LogInformation("C# HTTP trigger function processed a request.");

        var result = await _httpClient.GetAsync("https://jsonplaceholder.typicode.com/posts");
        if (result.IsSuccessStatusCode)
        {
            return new OkObjectResult(await result.Content.ReadAsStringAsync());
        }
        else
        {
            _logger.LogError("HTTP request failed.");
            return new StatusCodeResult(StatusCodes.Status500InternalServerError);
        }
    }
}