gpt4 book ai didi

c# - 我可以在 blazor 中使用 Autorest 客户端吗

转载 作者:行者123 更新时间:2023-11-30 23:03:22 24 4
gpt4 key购买 nike

尝试在 webassembly 上运行我的 blazor 应用程序时,我从单声道平台收到 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 框架注入(inject)的 HttpClient,如下所述:

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

(感谢链接Flores!)

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

autorest生成的类:

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

你的新部分:

public partial class YourApi
{
public void SetHttpClient(HttpClient client) {
this.HttpClient = client;
}
}

漂亮又简单!

关于c# - 我可以在 blazor 中使用 Autorest 客户端吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com