我正在尝试在新的默认项目中使用 ASP.NET Identity 和 SignalR (2.0.1)。
当我在 Startup 类中注释行 app.MapSignalR();
时,登录工作正常。我在登录方法中获得“用户”,已登录用户的用户名显示在页面上(通过 Context.User.Identity.GetUserName()
)。
当我在 Startup 类中取消注释 app.MapSignalR();
行时,我在方法 LogIn 中得到“user”,但未显示已登录用户的用户名。当我使用旧的成员(member)资格和 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();
}
}
}
最佳答案
检查您的包看起来是否像您使用的 webforms 和 SignalR。 SignalR 在 owin 管道上运行。
如果您正在运行 IIS,则需要以下软件包:
Microsoft.Owin.Host.SystemWeb(基于 OWIN 的应用程序在 IIS 上运行,在您的案例 Web 表单中使用 ASP.NET 请求管道)
Microsoft.AspNet.SignalR.SystemWeb(允许 SignalR 使用 ASP.NET 请求管道在 IIS 上运行)
关于c# - ASP.NET 标识和 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902905/