【问题标题】:Blazor WASM with SignalR sending objects带有 SignalR 的 Blazor WASM 发送对象
【发布时间】:2021-01-23 23:32:38
【问题描述】:

我有一个类,我正试图从带有 signalR 的 WebAPI 服务器发送到 Blazor WASM。我使用了新的 Blazor 模板,并选中了 .net 核心托管选项。将字符串或整数发送到 NewUser 方法可以正常工作,但是当使用如下所示的自定义对象时,我什么也得不到。我认为序列化/反序列化存在问题,但我找不到任何选项。我在配置中遗漏了什么吗?

public class User
{
    public string Id { get; set; }

    [Required(ErrorMessage ="You must specify a username")]
    [StringLength(20,MinimumLength=1,ErrorMessage="Please enter a username no longer than 20 characters")]
    public string Username { get; set; }
    public string ConnectionId { get; set; }
}

集线器

    public async Task Register(AppState state)
    {
        await _roomRepository.RegisterUser(state);
        await Groups.AddToGroupAsync(state.user.ConnectionId,state.matchroom.Id);
        await Clients.Group(state.matchroom.Id).SendAsync("NewUser", $"{state.user}");
    }

Startup.cs (WebAPI Server) 大量省略

services.AddSignalR();
services.AddResponseCompression(opts =>
      {
            opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
                new[] { "application/octet-stream" });
        });

Blazor 页面

protected override async Task OnInitializedAsync()
    {
        hubConnection = new HubConnectionBuilder()
            .WithUrl(NavigationManager.ToAbsoluteUri("/matchhub"))
            .Build();

        hubConnection.On<User>("NewUser", (user) =>
        {
            AppState.matchroom.Users.Add(user);
            StateHasChanged();
        });
    await hubConnection.StartAsync();
    AppState.user.ConnectionId = hubConnection.ConnectionId;
    await hubConnection.SendAsync("register", AppState)
    }

【问题讨论】:

  • 开启服务器端和客户端的日志记录。如果序列化/反序列化出现错误,它应该显示在日志中。
  • 实际上,在第二次读取时,您似乎将state.user 作为字符串写入并发送,因此客户端无法将User 类型与string 类型匹配它接收。
  • @Brennan 就是这样!发布,以便我标记答案!

标签: c# signalr blazor


【解决方案1】:

看起来您正在将state.user 写为字符串并发送,因此客户端无法将User 类型与其接收的string 类型匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 2020-12-24
    • 2022-01-01
    • 2020-10-04
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多