Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na pierwszy rzut oka
Celem: Używanie Dev Proxy z funkcjami Azure na platformie .NET
Czas: 10 minut
Wtyczki: Różne
Wymagania wstępne:konfigurowanie serwera proxy dev, narzędzi Azure Functions Core Tools
Jeśli tworzysz usługę Azure Functions przy użyciu platformy .NET i chcesz używać serwera proxy deweloperskiego, postępuj zgodnie z ogólnymi wskazówkami dotyczącymi korzystania z serwera proxy deweloperskiego z aplikacjami platformy .NET.
Ważne
Aby zapobiec awarii usługi Azure Functions podczas uruchamiania, uruchom Dev Proxy bez rejestrowania go jako proxy systemowego, korzystając z opcji --as-system-proxy false lub poprzez skonfigurowanie asSystemProxy do false w pliku devproxyrc.json. Jeśli zarejestrujesz serwer proxy dev jako serwer proxy systemu, usługa Azure Functions zakończy się niepowodzeniem podczas uruchamiania z komunikatem o błędzie podobnym do następującego:
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.")'
Aby móc łatwo przełączać się między używaniem serwera proxy deweloperskiego w środowisku deweloperskim i nie używać go w środowisku produkcyjnym, najlepiej skonfigurować serwer proxy w aplikacji usługi Azure Functions przy użyciu zmiennych środowiskowych. Zmień plik, local.settings.json aby uwzględnić zmienną HTTPS_PROXY środowiskową.
Plik: local.settings.json
{
"IsEncrypted": false,
"Values": {
"HTTPS_PROXY": "http://127.0.0.1:8000"
}
}
HttpClient na platformie .NET automatycznie pobiera zmienną HTTPS_PROXY środowiskową i używa jej do konfigurowania serwera proxy dla wychodzących żądań HTTP.
Plik: MyFn.cs
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);
}
}
}