我可以在blazor中使用Autorest客户端吗?

asp.net-core autorest blazor c# mono

当我尝试在webassembly上运行我的blazor应用程序时,我从mono平台获得了System.PlatformNotSupportedException 。我使用Autorest自动生成了一个web api客户端。一切都编译得很好但是当我在浏览器中加载代码时,我在浏览器控制台中收到以下错误。

使用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 ---
...

热门答案

对的,这是可能的。但是你必须使用由blazor框架注入的HttpClient,如下所述:

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

(感谢弗洛雷斯的链接!)

HttpClient在Autorest使用的Microsoft.Rest.ServiceClient中标记为受保护。因此,要从blazor注入HttpClient,您可以创建自动生成的客户端类的新部分并添加SetHttpClient方法:

autorest生成的类:

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

你的新部分:

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

好又简单!




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因