问题描述
当尝试在webassembly上运行我的blazor应用程序时,我从mono平台获取了System.PlatformNotSupportedException
.我使用Autorest自动生成了一个Web API客户端.一切都可以正常编译,但是当我在浏览器中加载代码时,在浏览器控制台中出现以下错误.
I am getting a System.PlatformNotSupportedException
from the mono platform when trying to run my blazor app on webassembly.I autogenerated a web api client using Autorest. Everything is compiling fine but when I load the code in the browser I get the error below in the browser console.
使用VS2017的预览版本.
Using a preview build of 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,如下所述:
Yes it is possible. But you have to use the HttpClient that is injected by the blazor framework as described here:
https://learn-blazor.com/architecture/rest-api/
(感谢链接 Flores !)
在HttpClient被Autorest使用的Microsoft.Rest.ServiceClient中标记为受保护.因此,要从blazor注入HttpClient,您可以创建自动生成的客户端类的新部分并添加SetHttpClient
方法:
The HttpClient is marked as protected in the Microsoft.Rest.ServiceClient that is used by Autorest. So to inject the HttpClient from blazor, you can create a new partial of the autogenerated client class and add a SetHttpClient
method:
由autorest生成的类:
The class generated by autorest:
public partial class YourApi : ServiceClient<YourApi>, IYourApi
{
...
}
您的新部分:
public partial class YourApi
{
public void SetHttpClient(HttpClient client) {
this.HttpClient = client;
}
}
又好又简单!
这篇关于我可以在Blazor中使用Autorest客户端吗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!