Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se si compila Funzioni di Azure usando JavaScript e si vuole usare Dev Proxy, seguire le indicazioni generali per l'uso di Dev Proxy con applicazioni Node.js.
Importante
Per impedire che le Funzioni di Azure falliscano all'avvio, avviare Dev Proxy senza registrarlo come proxy di sistema, utilizzando l'opzione --as-system-proxy false o configurando asSystemProxy a false nel file devproxyrc.json. Se si registra Dev Proxy come proxy di sistema, Funzioni di Azure non riesce all'avvio con un messaggio di errore simile al seguente:
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.")'
Per essere in grado di passare facilmente dall'uso di Dev Proxy in fase di sviluppo e non dall'uso nell'ambiente di produzione, è possibile configurare meglio il proxy nell'app Funzioni di Azure usando le variabili di ambiente. Modificare il local.settings.json file in modo da includere la HTTPS_PROXY variabile di ambiente. Disabilitare inoltre la convalida del certificato per consentire all'app Funzioni di Azure di considerare attendibile il certificato autofirmato usato dal proxy di sviluppo.
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
Nell'app Funzioni di Azure usare l'oggetto process.env per leggere le variabili di ambiente e configurare il proxy per le richieste HTTP.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
export async function MyFnHttpTrigger(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const options = process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {};
const resp = await fetch('https://jsonplaceholder.typicode.com/posts', options);
const data = await resp.json();
return {
status: 200,
jsonBody: data
};
};
app.http('MyFnHttpTrigger', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: MyFnHttpTrigger
});