#.net-core #signalr
Вопрос:
Я переписываю существующее приложение .NET Framework в приложение .NET Core. В старой версии, которая использует SignalR 2.x, я смог установить значения строки запроса для подключения на стороне клиента:
$.connection.hub.qs = { appId: 123, instanceId: 456 };
А затем в самом концентраторе (на стороне сервера) Я смог восстановить значения строки запроса следующим образом:
int.TryParse(Context.QueryString["appId"]), out var appId);
Однако у HubCallerContext больше нет соединения NameValueConnection строки запроса в .NET Core. Как я могу установить/восстановить значения строки запроса в версии SingalR для .NET Core? Есть ли лучший способ передать параметр, необходимый для всех методов на определенном концентраторе?
Ответ №1:
Для достижения этой цели в .NET Core в коде на стороне клиента, где вы создаете соединение-концентратор, вам необходимо выполнить следующее:
connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub?appId=123")
.withAutomaticReconnect()
.build();
Затем в вашей логике концентратора вы можете вернуть значение строки запроса следующим образом:
int.TryParse(Context.GetHttpContext().Request.Query["appId"], out var appId);