SignalR 中的 AllowAnonymous 属性
AllowAnonymous attribute in SignalR
[Authorize] // Derived from Microsoft.AspNet.SignalR.Authorize
public class ChatHub : Hub
{
[System.Web.Mvc.AllowAnonymous] // [AllowAnonymous] doesn't be supported here
public async Task GetEmails()
{
using (var db = new MyDbContext())
{
var users = await db.Users.ToListAsync();
var emails = new List<string>();
users.ForEach(x => emails.Add(x.Email));
Clients.All.getEmails(JsonConvert.SerializeObject(emails));
}
}
}
我的问题:我将断点设置为 GetEmails
方法,但它从未命中。然后,我登录并再次尝试,成功了。
这意味着:[System.Web.Mvc.AllowAnonymous]
在 [Microsoft.AspNet.SignalR.Authorize]
内不起作用。
所以,我的问题是:为什么命名空间 Microsoft.AspNet.SignalR
不支持 [AllowAnonymous]
属性?我需要为此声明 AllowAnonymous
属性吗?
我已经解决了问题:使用 [System.Web.Mvc.Authorize]
而不是 [Authorize]
。像这样:
[System.Web.Mvc.Authorize]
public class ChatHub : Hub
{
[System.Web.Mvc.AllowAnonymous]
public async Task GetEmails()
{
// ...
}
}
我不明白为什么,但它应该可以完美运行:)
[Authorize] // Derived from Microsoft.AspNet.SignalR.Authorize
public class ChatHub : Hub
{
[System.Web.Mvc.AllowAnonymous] // [AllowAnonymous] doesn't be supported here
public async Task GetEmails()
{
using (var db = new MyDbContext())
{
var users = await db.Users.ToListAsync();
var emails = new List<string>();
users.ForEach(x => emails.Add(x.Email));
Clients.All.getEmails(JsonConvert.SerializeObject(emails));
}
}
}
我的问题:我将断点设置为 GetEmails
方法,但它从未命中。然后,我登录并再次尝试,成功了。
这意味着:[System.Web.Mvc.AllowAnonymous]
在 [Microsoft.AspNet.SignalR.Authorize]
内不起作用。
所以,我的问题是:为什么命名空间 Microsoft.AspNet.SignalR
不支持 [AllowAnonymous]
属性?我需要为此声明 AllowAnonymous
属性吗?
我已经解决了问题:使用 [System.Web.Mvc.Authorize]
而不是 [Authorize]
。像这样:
[System.Web.Mvc.Authorize]
public class ChatHub : Hub
{
[System.Web.Mvc.AllowAnonymous]
public async Task GetEmails()
{
// ...
}
}
我不明白为什么,但它应该可以完美运行:)