如何获取给定 SignalR .Net Core 连接的客户端页面 URI
How to get client page URI for a given SignalR .Net Core Connection
我正在将我的 ASP.Net MVC 应用程序升级到 ASP.Net Core 3.1
在现有的应用程序中,我可以通过重写 Hub
class 的 OnConnected
方法来访问 SignalR 连接来自的 URL,和阅读 Context.Headers("referer")
。我会用它来判断每个 SignalR 连接在我的应用程序的哪个页面上。
但是,在 SignalR .Net Core 中,没有这样的 header 发送。
如何获取 .Net Core 3.1 中 SignalR 连接的引用 URL?
How can I get to the referring URL for the SignalR connections in .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();
}
测试结果
我正在将我的 ASP.Net MVC 应用程序升级到 ASP.Net Core 3.1
在现有的应用程序中,我可以通过重写 Hub
class 的 OnConnected
方法来访问 SignalR 连接来自的 URL,和阅读 Context.Headers("referer")
。我会用它来判断每个 SignalR 连接在我的应用程序的哪个页面上。
但是,在 SignalR .Net Core 中,没有这样的 header 发送。
如何获取 .Net Core 3.1 中 SignalR 连接的引用 URL?
How can I get to the referring URL for the SignalR connections in .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();
}
测试结果