2016-01-07 59 views
1
[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方法,但它從來沒有命中。然後,我登錄並再次嘗試,它正在工作。SignalR中允許匿名屬性

表示:[System.Web.Mvc.AllowAnonymous][Microsoft.AspNet.SignalR.Authorize]內不能工作。

那麼,我的問題是:爲什麼命名空間Microsoft.AspNet.SignalR不支持[AllowAnonymous]屬性?我需要聲明AllowAnonymous屬性嗎?

回答

1

我已經解決了這個問題:使用[System.Web.Mvc.Authorize]而不是[Authorize]。就像這樣:

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

我不明白爲什麼,但它應該很好地工作:)