Kann ich einen Autorest-Client in blazor verwenden?

asp.net-core autorest blazor c# mono

Frage

Ich System.PlatformNotSupportedException eine System.PlatformNotSupportedException von der Mono-Plattform, wenn ich versuche, meine blazor-App auf webassembly auszuführen. Ich habe einen Web-API-Client mit Autorest automatisch generiert. Alles funktioniert gut, aber wenn ich den Code im Browser lade, erhalte ich den Fehler unten in der Browser-Konsole.

Verwenden eines Vorschau-Builds von 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 ---
...

Beliebte Antwort

Ja, es ist möglich. Aber Sie müssen den HttpClient verwenden, der vom Blazor-Framework wie hier beschrieben injiziert wird:

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

(Danke für den Link Flores !)

Der HttpClient ist im Microsoft.Rest.ServiceClient, der von Autorest verwendet wird, als geschützt gekennzeichnet. Um also den HttpClient aus blazor zu injizieren, können Sie einen neuen Teil der SetHttpClient Client-Klasse erstellen und eine SetHttpClient Methode hinzufügen:

Die Klasse, die von autorest generiert wird:

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

Dein neuer Teil:

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

Schön und einfach!




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum