ASP.NET身份和SignalR

时间:2014-01-03 11:44:18

标签: c# asp.net webforms signalr asp.net-identity

我正在尝试在新的默认项目中使用ASP.NET Identity和SignalR(2.0.1)。

当我在Startup类中评论行app.MapSignalR();时,登录工作正常。我在方法LogIn中获得“user”,登录用户的用户名显示在页面上(通过Context.User.Identity.GetUserName())。

当我在Startup类中取消注释行app.MapSignalR();时,我在方法LogIn中得到“user”,但是没有显示已登录用户的用户名。当我使用旧的memebership和SignalR时,一切正常。我错过了什么吗?

protected void LogIn(object sender, EventArgs e)
{
    if (IsValid)
    {
        // Validate the user password
        var manager = new UserManager();
        ApplicationUser user = manager.Find(UserName.Text, Password.Text);
        if (user != null)
        {
            IdentityHelper.SignIn(manager, user, RememberMe.Checked);
            IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
        }
        else
        {
            FailureText.Text = "Invalid username or password.";
            ErrorMessage.Visible = true;
        }
    }
}


using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(Tmp.Startup))]
namespace Tmp
{
    public partial class Startup {
        public void Configuration(IAppBuilder app) {
            app.MapSignalR();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

检查您的包看起来像使用webforms和SignalR。 SignalR在owin管道上运行。

如果您正在运行IIS,则需要以下软件包:

  • Microsoft.Owin.Host.SystemWeb(在您的案例网页中使用ASP.NET请求管道在IIS上运行的基于OWIN的应用程序)

  • Microsoft.AspNet.SignalR.SystemWeb(允许SignalR使用ASP.NET请求管道在IIS上运行)