Asp.net mvc 信号器中的异名属性 [Authorize]//源自Microsoft.AspNet.signal.Authorize 公共类聊天室:聊天室 { 此处不支持[System.Web.Mvc.AllowAnonymous]/[AllowAnonymous] 公共异步任务GetEmails() { 使用(var db=new MyDbContext()) { var users=await db.users.ToListAsync(); var=新列表(); users.ForEach(x=>emails.Add(x.Email)); Clients.All.getEmails(JsonConvert.SerializeObject(emails)); } } }

Asp.net mvc 信号器中的异名属性 [Authorize]//源自Microsoft.AspNet.signal.Authorize 公共类聊天室:聊天室 { 此处不支持[System.Web.Mvc.AllowAnonymous]/[AllowAnonymous] 公共异步任务GetEmails() { 使用(var db=new MyDbContext()) { var users=await db.users.ToListAsync(); var=新列表(); users.ForEach(x=>emails.Add(x.Email)); Clients.All.getEmails(JsonConvert.SerializeObject(emails)); } } },asp.net-mvc,signalr,authorize,Asp.net Mvc,Signalr,Authorize,我的问题是:我曾将断点设置为GetEmailsmethod,但它从未命中。然后,我登录并再次尝试,它正在工作 这意味着:[System.Web.Mvc.AllowAnonymous]不能在[Microsoft.AspNet.signal.Authorize]中工作 所以,我的问题是:为什么名称空间Microsoft.AspNet.signar不支持[AllowAnonymous]属性?我需要为此声明AllowAnonymous属性吗?我已经解决了这个问题:使用[System.Web.Mvc.Au

我的问题是:我曾将断点设置为
GetEmails
method,但它从未命中。然后,我登录并再次尝试,它正在工作

这意味着:
[System.Web.Mvc.AllowAnonymous]
不能在
[Microsoft.AspNet.signal.Authorize]
中工作


所以,我的问题是:为什么名称空间
Microsoft.AspNet.signar
不支持
[AllowAnonymous]
属性?我需要为此声明
AllowAnonymous
属性吗?

我已经解决了这个问题:使用
[System.Web.Mvc.Authorize]
而不是
[Authorize]
。像这样:

[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));
        }
    }
}

我不明白为什么,但它应该工作得很好:)

你的平台是什么?
[System.Web.Mvc.Authorize] 
public class ChatHub : Hub
{
    [System.Web.Mvc.AllowAnonymous] 
    public async Task GetEmails()
    {
        // ...
    }
}