You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SignalR Hub集成MessagePack协议时调用Chat方法出现参数绑定错误的解决方案咨询

SignalR Hub集成MessagePack协议时调用Chat方法出现参数绑定错误的解决方案咨询

我最近碰到个棘手的问题,想请大家帮忙看看:当我尝试调用SignalR Hub里的Chat方法时,总会弹出这个错误:

Error: Failed to invoke 'Chat' due to an error on the server. InvalidDataException: Error binding arguments. Make sure that the types of the provided values match the types of the hub method being invoked.

但奇怪的是,如果我把JS调用里的.withHubProtocol(new signalR.protocols.msgpack.MessagePackHubProtocol())这行代码删掉,用默认的JSON协议,调用就完全正常,一点问题都没有。

下面是我用到的相关代码:

模型类代码

[MessagePackObject]
public class AiChatRequestViewModel
{
    public AiChatRequestViewModel(){}
    
    [Key(0)]
    public int UserId { get; set; }
    [Key(1)]
    public string UserPrompt { get; set; }
    [Key(2)]
    public int Samples { get; set; } = 4000;
    [Key(3)]
    public string DocumentText { get; set; }
    [Key(4)]
    public decimal Temperature { get; set; } = 0.0m;
    [Key(5)]
    public List<AiChatMessage> PreviousMessages { get; set; } = new List<AiChatMessage>();
    [IgnoreMember]
    public string AIPrompt => $@"Human: ...";
}

我自己也琢磨了几个可能的方向,但还没解决:

  • 是不是AiChatMessage类没配置MessagePack的序列化特性?毕竟模型里包含这个列表,如果它没加[MessagePackObject]和[Key]标记,会不会导致反序列化失败?
  • 前端传递的参数顺序、类型和后端模型的Key对应关系有没有问题?毕竟MessagePack是靠Key顺序来序列化的,不像JSON看字段名,会不会顺序错了或者类型不匹配?
  • 服务端有没有正确配置MessagePack支持?比如我是不是漏了在AddSignalR的时候加.AddMessagePackProtocol()的配置?
  • 前后端的MessagePack库版本会不会不兼容?比如前端用的msgpack库和后端的MessagePack NuGet包版本差太多?
  • 那个Temperature是decimal类型,MessagePack对这个类型的处理有没有什么特殊要求?会不会需要自定义序列化器?

有没有大佬碰到过类似的问题,给我指个方向?

备注:内容来源于stack exchange,提问作者geoff swartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:22:59