在一个项目里,实时消息使用 asp.net core 3.0+signalr
JS 端 有一段这样的代码:
···
messageConnection.start().then(() => {
messageConnection.invoke('Connect', this.userid, this.name).catch(err => console.error(err.toString()))
}).catch(e => console.error(e.message))
···
当客户端连接成功以后,调用 服务端的connect方法,加入用户组信息,这个方法调用时一直报错。
报错内容为:Error:Failed to invoke 'Connect' due to an error on the server
另外建个方法,手写代码,执行messageConnection.invoke('Connect', '1','2');这样又不报错。
一开始百思不得其解,后来发现,是因为在js里面,userid为整型,在后台的c#定义为string.原因造 成的。
修改为:
···
messageConnection.start().then(() => {
messageConnection.invoke('Connect', this.userid.toString(), this.name).catch(err => console.error(err.toString()))
}).catch(e => console.error(e.message))
···
即正常。把userid转换为字符串即可。
这种小细节,有的时候 一下子没有反应过来。调试起来非常郁闷。
网友评论