Tom*_*Tom 1 c# webassembly grpc-web uno-platform blazor-webassembly
我正在尝试使用gRPC-Web制作Uno Platform的示例。
因此我从这篇文章提供的内容中得到了启发。我按照文章的说明创建了一个BlazorApp,它使用gRPC-Web 的天气服务。之后,我还添加了另一个服务,即计数器服务,如gRPC-Web 示例中所示。
一切正常后,我添加了一个Uno Platform WebAssembly应用程序来替换BlazorApp客户端。
当尝试创建应用程序时,GrpcChannel应用程序会获得一个System.NullReferenceException.
创建通道的代码片段如下所示:
var baseUri = "https://localhost:44366";
var channel = GrpcChannel.ForAddress(baseUri, new GrpcChannelOptions());
Run Code Online (Sandbox Code Playgroud)
这与BlazorApp中使用的代码完全相同。
BlazorApp和Uno Platform WebAssembly的示例代码可以在此存储库中找到。
任何想法/建议/帮助将不胜感激。
好的,我分析了你的代码,发现你的代码有4个问题:
MainPage.xaml.cs。这不是生产质量,但它可以用于演示 gRPC 的目的。.IncrementCount()。这在 WASM 上是不可能的,因为不可能阻塞WASM 中的主线程(实际上,这是可能的,但您需要使用隐藏在 JavaScript 深处的原语,无论如何它都不会解决您的问题)。这就是为什么在 Blazor 上您需要调用.IncrementCountAsync(). WASM 上也存在相同的要求。<Grid>没有任何rows 的元素,因此每个元素都是一个一个地绘制的。我将其替换为 a<StackPanel>以获得更好的结果。我在你的项目的一个 Fork 上发布了一个工作版本,它可以工作!