Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą.
{
"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.
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);
}
}
}