Posso usare un client Autorest in blazer

asp.net-core autorest blazor c# mono

Domanda

Ricevo una System.PlatformNotSupportedException dalla piattaforma mono quando provo a eseguire la mia applicazione blazor su webassembly. Ho creato un client Web API utilizzando Autorest. Tutto sta compilando bene ma quando carico il codice nel browser ottengo l'errore sotto nella console del browser.

Utilizzando una build di anteprima di VS2017.

module.printErr @ MonoPlatform.ts:192
WASM: [System.PlatformNotSupportedException] Operation is not supported on this platform.
WASM:   at System.Net.WebProxy.CreateDefaultProxy () <0x204ed08 + 0x00004> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.Configuration.DefaultProxySectionInternal.GetSystemWebProxy () <0x204ebc0 + 0x00000> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.Configuration.DefaultProxySectionInternal.GetDefaultProxy_UsingOldMonoCode () <0x204ea80 + 0x00000> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.Configuration.DefaultProxySectionInternal.GetSection () <0x204e8c8 + 0x00022> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.WebRequest.get_InternalDefaultWebProxy () <0x204e610 + 0x0002c> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.HttpWebRequest..ctor (System.Uri uri) <0x2043eb0 + 0x000d2> in <1c80af700ca2462a80a92d89ad803d6a>:0 
WASM:   at System.Net.Http.HttpClientHandler.CreateWebRequest (System.Net.Http.HttpRequestMessage request) <0x20434d0 + 0x00016> in <3a9393eaef104ec489024eb855a8f163>:0 
WASM:   at System.Net.Http.HttpClientHandler+<SendAsync>d__64.MoveNext () <0x203ea60 + 0x00076> in <3a9393eaef104ec489024eb855a8f163>:0 
WASM: --- End of stack trace from previous location where exception was thrown ---
...

Risposta popolare

Sì, è possibile. Ma devi usare HttpClient che viene iniettato dal blazor framework come descritto qui:

https://learn-blazor.com/architecture/rest-api/

(grazie per il link Flores !)

HttpClient è contrassegnato come protetto nel Microsoft.Rest.ServiceClient utilizzato da Autorest. Quindi, per iniettare HttpClient dal blazor, puoi creare un nuovo parziale della classe client SetHttpClient e aggiungere un metodo SetHttpClient :

La classe generata dall'autore:

public partial class YourApi : ServiceClient<YourApi>, IYourApi
{
    ...
}

Il tuo nuovo parziale:

public partial class YourApi : ServiceClient<YourApi>, IYourApi
{
    ...
}

Bello e semplice!




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché