System.Private.Uri: il valore non può essere un errore nullo con la funzione di Azure

Aug 21 2020

Ho creato una funzione Azure C # in Visual Studio Code. Quando eseguo la funzione in Visual Studio Code, ottengo il seguente errore:

[8/21/2020 1:27:34 AM] A host error has occurred during startup operation '803d7235-e81a-4768-a68d-15fcd93d8518'.
[8/21/2020 1:27:34 AM] System.Private.Uri: Value cannot be null. (Parameter 'uriString').
[8/21/2020 1:27:34 AM] Stopping JobHost
Value cannot be null. (Parameter 'provider')

Come posso risolverlo?

Risposte

1 JayaChatterjee-MSFT Aug 26 2020 at 13:23

Ci sono un paio di cose che puoi controllare:

  1. Se stiamo usando un endpoint di connessione e leggiamo il valore dal file appsettings. In caso affermativo, controlla il valore di tali impostazioni.
  2. Conferma se stiamo utilizzando un endpoint di connessione bus di servizio valido in questo caso. (se ce n'è)

Queste sono spiegazioni molto generiche per l'affermazione del problema in quanto non forniscono ulteriori dettagli. In caso di funzioni molte volte vediamo questo errore perché se il valore della stringa di connessione viene letto da Azure Key Vault e si perde l'impostazione di questo valore nelle impostazioni dell'app della configurazione della funzione di Azure. In questo scenario, un criterio di accesso creato nella configurazione dell'insieme di credenziali delle chiavi in ​​modo che l'applicazione della funzione di Azure possa leggere i valori dall'insieme di credenziali delle chiavi. Quindi è necessario verificare nuovamente i criteri di accesso per assicurarsi che i valori delle impostazioni dell'app delle chiavi abbiano valori validi.

1 Liam Oct 22 2020 at 17:34

Sembra essere un problema generico in cui se un servizio Azure non è in grado di connettersi a nessun altro servizio utilizzando un Uri, viene visualizzato questo errore. Sembra che tu lo capisca se il problema si verifica prima dell'invocazione, ad esempio in Startup.cs. Quindi controlla che tutte le Urichiamate abbiano l'URL / la stringa di connessione corretti.

Per me il problema era questa riga nella mia startup:

builder.AddSecretClient(new Uri(Environment.GetEnvironmentVariable("KeyVaultUrl")));

Quella variabile d'ambiente era nulla.

1 PeterMorris Oct 28 2020 at 17:30

Per me il problema era che avevo incollato un valore di stringa di connessione errato in local.settings.json- invece di "EndPoint=...averlo fatto"\"Endpoint=...