Как получить URI страницы клиента для данного SignalR. Net Core Connection - PullRequest
0 голосов
/ 07 января 2020

Я обновляю свое ASP. Net MVC приложение до ASP. Net Core 3.1

В существующем приложении я могу получить URL-адрес, по которому подключено SignalR происходит путем переопределения метода OnConnected класса Hub и чтения Context.Headers("referer"). Я бы использовал это, чтобы определить, на какой странице моего приложения находится каждое соединение SignalR.

Однако в SignalR. Net Core такой заголовок не отправляется.

Как я могу получить ссылку на URL для соединений SignalR в. Net Core 3.1?

1 Ответ

0 голосов
/ 08 января 2020

Как получить URL-адрес для подключений SignalR в. Net Core 3.1?

Чтобы удовлетворить ваши требования, вы можете попытаться передать путь и имя файла текущая страница в виде строки запроса при настройке HubConnection, как показано ниже.

var pn = window.location.pathname;
var connection = new signalR.HubConnectionBuilder().withUrl("https://xxxx/chatHub?pagename=" + pn)
    .build();

Затем на своем хаб-сервере вы можете получить их, используя следующий фрагмент кода.

public override async Task OnConnectedAsync()
{
    var httpcontext = Context.GetHttpContext();
    var pname = httpcontext.Request.Query["pagename"];
    var from = httpcontext.Request.Headers["Origin"];

    //code logic here


    await base.OnConnectedAsync();
}

Результат теста

enter image description here

...