blazor - 不支持 WebClient

标签 blazor

正在尝试使用 WebClient在 Blazor 项目中。

得到以下错误:

blazor.webassembly.js:1

WASM: System.Net.WebException: An exception occurred during a WebClient request.
System.PlatformNotSupportedException: Operation is not supported on this platform.

如何在 Blazor 中进行 API/网络调用?

最佳答案

Blazor 不支持 WebClient。您应该改用 HttpClient。在 Blazor 客户端 HttpClient 由框架作为服务提供;因此,您可以将其注入(inject)到您的组件或普通类中。在服务器端 Blazor 中缺少此优惠,您应该自己创建和配置 HttpClient。您也可以使用 IHttpClientFactory 来提供 HttpClient,这是更可取的。

注意:WebClient 不能在浏览器(客户端 Blazor)上使用,因为它是相对较旧的技术,没有理由将其适配到浏览器上使用。您可能认为这是可能的,因为 HttpClient 可以在浏览器上运行,但在这里澄清一下,当您在浏览器上使用 HttpClient 时,实际上并没有使用实际的 HttpClient,它可能会使用 websockets 等,这可能是一个好主意,而是 HttpClient 的一种适配形式,它在后台使用了 JavaScript Fetch API。

希望这可以帮助...

好消息:

Moving to the mono.wasm bindings should enable support for WebSockets, HttpClient without addition code on our side, etc.



来源:https://github.com/aspnet/AspNetCore/issues/10489

关于blazor - 不支持 WebClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56284192/

相关文章:

c# - 我如何连接 Blazor 和 SOAP api

c# - 使用按键触发 Blazor 中的按钮时未设置对象引用

asp.net-core - 用于 onclick 的 Blazor 条件 if 语句

c# - 自动刷新 Blazor 中的组件

c# - 如何制作使用 oninput 而不是 onchange 绑定(bind)的 EditForm 输入?

asp.net-core - 如何从浏览器中清除 Blazor WebAssembly DLL?

c# - 使用 Blazor 渲染未知深度的树结构

c# - StateHasChanged() 重新渲染组件两次

c# - Blazor 中的禁用/启用按钮 - 取决于表单中的内容

c# - 我们可以在常规的非 Blazor HTML 页面中将 Blazor 组件用作 Web 组件吗?