将signalR 1.1.2迁移到signalR 2.0.0后,WebSecurity.CurrentUserId无法正常工作

时间:2014-04-25 22:15:53

标签: authentication asp.net-membership signalr signalr-hub

我在此链接http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/upgrading-signalr-1x-projects-to-20之后将我的signalR版本从1.1.2升级到signalR 2.0.3并且一切正常,但是当我调用集线器的任何方法时,WebMatrix.WebData.WebSecurity.CurrentUserId具有空值在服务器中。

这是我的启动文件:

using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR;

[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR(new HubConfiguration
                {
                    Resolver = GlobalHost.DependencyResolver
                });
            GlobalHost.HubPipeline.RequireAuthentication();
        }
    }
}

这是我的中心之一:

[Authorize]
    public class MessageConnection : Hub
    {
      ...
      public Task SendMessage(int destinationId, string msg)
        {
            int userId = WebMatrix.WebData.WebSecurity.CurrentUserId; //throwing exception              ...
        }
    }

在将SignalR升级到V 2.0.3之前,这段代码工作正常,所以我不知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

最新版本SignalR(> 2.0.0)中使用的Owin版本(2.0.0)与Webmatrix.WebData.WebSecurity不兼容。相反,它可以替换为AspNet.Identity。