SignalR中的AllowAnonymous属性

时间:2016-01-07 06:26:40

标签: asp.net-mvc signalr 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));
        }
    }
}

我的问题:我将断点设置为GetEmails方法但它永远不会被击中。然后,我登录并再次尝试,它正在工作。

这意味着:[System.Web.Mvc.AllowAnonymous][Microsoft.AspNet.SignalR.Authorize]内工作。

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

1 个答案:

答案 0 :(得分:1)

我已解决了问题:使用[System.Web.Mvc.Authorize]代替[Authorize]。像这样:

[System.Web.Mvc.Authorize] 
public class ChatHub : Hub
{
    [System.Web.Mvc.AllowAnonymous] 
    public async Task GetEmails()
    {
        // ...
    }
}

我不明白为什么,但它应该完美地工作:)