正在使用的SignalR hub web api side SignalR nuget包是“Microsoft.AspNetCore.SignalR“版本=“1.0.3”。
正在使用的客户端nuget包是“Microsoft.AspNetCore.SignalR.Client“Version=”1.0.3“/>gt;
SignalerHubWebAPI端的初始代码如下所示-
public async Task<bool> SendResponse(string uniqueId, string param1, string param2, string param3, string param4, string param5, string param6)
{
await HubContext.Clients.Group(uniqueId).SendAsync("SendResponse", param1, param2, param3, param4, param5,param6);
return true;
}
Connection.On<string, string, string, string, string, string>("SendResponse",
async (param1, param2, param3, param4, param5, param6) =>
{
//code here.
});
当用户想要更新nuget包时,这个客户端代码通过nuget包和它的on-application所有者共享。
为了满足这一要求,我在信号机集线器侧做了如下代码更改-
public async Task<bool> SendResponse(string uniqueId, string param1, string param2, string param3, string param4, string param5, string param6, string param7)
{
//send 6 parameters in old method so that client code can continue his work without updating client side code changes.
await HubContext.Clients.Group(uniqueId).SendAsync("SendResponse", param1, param2, param3, param4, param5, param6);
//Send 7 parameters in new method.
await HubContext.Clients.Group(uniqueId).SendAsync("SendResponse2", param1, param2, param3, param4, param5, param6, param7);
return true;
}
Exception thrown: 'System.IO.InvalidDataException' in Microsoft.AspNetCore.SignalR.Protocols.Json.dll
Invocation provides 7 argument(s) but target expects 0.
客户端response2方法的更改-
Connection.On<string, string, string, string, string, string, string>("SendResponse2",
async (param1, param2, param3, param4, param5, param6, param7) =>
{
//code here.
});
请告诉我如何解决这个问题。
对我来说最重要的一点是,如果我的最终用户更新了客户端代码,他们应该可以正常工作。