这让我疯狂。
我正在使用最新的signalR版本(2.0.2)。这是我的中心码(OnConnected)
public override Task OnConnected() { //User is null then Identity and Name too. Connections.Add(Context.User.Identity.Name,Context.ConnectionId); return base.OnConnected(); }
这是我的Controller的登录方式:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(Loginviewmodel model,string returnUrl) { if (ModelState.IsValid) { var user = await UnitOfWork.UserRepository.FindAsync(model.UserName,model.Password); if (user != null) { await SignInAsync(user,model.RememberMe); return RedirectToLocal(returnUrl); } } TempData["ErrorMessage"] = Resources.InvalidUserNameOrPassword; // If we got this far,something Failed,redisplay form return RedirectToAction("Index","Home"); }
我发现有些人在Ondisconnected上遇到这个问题,我甚至没有在那里。
我正在使用MCV5模板。
你有什么想法有什么问题吗?
解决方法
我找到了最终的解决方案,这是我的OWIN启动类的代码:
public void Configuration(IAppBuilder app) { app.MapSignalR(); // Enable the application to use a cookie to store information for the signed i user app.UseCookieAuthentication(new CookieAuthenticationoptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Home/Index") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseMicrosoftAccountAuthentication(new MicrosoftProvider().GetAuthenticationoptions()); app.UseTwitterauthentication(new TwitterProvider().GetAuthenticationoptions()); app.UseFacebookAuthentication(new FacebookProvider().GetAuthenticationoptions()); app.UseGoogleAuthentication(new GoogleProvider().GetAuthenticationoptions()); }
让我自己喝咖啡,我以为“在验证后映射SignalR如何,瞧!现在它按照预期工作。
public void Configuration(IAppBuilder app) { // Enable the application to use a cookie to store information for the signed i user app.UseCookieAuthentication(new CookieAuthenticationoptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Home/Index") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseMicrosoftAccountAuthentication(new MicrosoftProvider().GetAuthenticationoptions()); app.UseTwitterauthentication(new TwitterProvider().GetAuthenticationoptions()); app.UseFacebookAuthentication(new FacebookProvider().GetAuthenticationoptions()); app.UseGoogleAuthentication(new GoogleProvider().GetAuthenticationoptions()); app.MapSignalR(); }
原文地址:https://www.jb51.cc/aspnet/253796.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。