在ASP.NET Core SignalR调用中访问HttpContext和设置响应头是一项常见任务。可以通过将HttpContextAccessor注入到需要的组件中来实现此功能。此外,可以在SignalR Hub中重写OnConnectedAsync方法,并在其中访问HttpContext和设置响应头。
以下是一个示例:
services.AddHttpContextAccessor();
public class MyHub : Hub
{
private readonly HttpContextAccessor _httpContextAccessor;
public MyHub (HttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public async Task SomeMethod()
{
var username = _httpContextAccessor.HttpContext.User.Identity.Name;
// do something with the username
}
}
public override async Task OnConnectedAsync()
{
var context = Context.GetHttpContext();
context.Response.Headers.Add("X-My-Header", "My header value");
await base.OnConnectedAsync();
}
这样,HttpContext和响应头都可以在SignalR调用中访问和设置。