¿Puedo usar un cliente Autorest en blazor?

asp.net-core autorest blazor c# mono

Pregunta

System.PlatformNotSupportedException una System.PlatformNotSupportedException de la plataforma mono cuando intento ejecutar mi aplicación blazor en webassembly. Autogeneré un cliente web de API utilizando Autorest. Todo se está compilando bien, pero cuando cargo el código en el navegador, aparece el siguiente error en la consola del navegador.

Usando una compilación de vista previa de 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 ---
...

Respuesta popular

Sí, es posible. Pero tiene que usar el HttpClient que es inyectado por el marco blazor como se describe aquí:

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

(Gracias por el enlace Flores !)

El HttpClient está marcado como protegido en el Microsoft.Rest.ServiceClient que utiliza Autorest. Entonces, para inyectar el HttpClient desde blazor, puede crear un nuevo parcial de la clase cliente SetHttpClient y agregar un método SetHttpClient :

La clase generada por autorest:

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

Su nuevo parcial:

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

Agradable y sencillo!




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué