c# - ASP.NET 标识和 SignalR

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

我正在尝试在新的默认项目中使用 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/

相关文章:

c# - 如何将自己的方法属性分配给ObjectDataSource?

asp.net:__doPostBack 有时不呈现

C# VSTO 加载项 - 将纯文本电子邮件转换为 HTML

c# - AjaxFileUpload 隐藏上传按钮并手动处理上传?

asp.net - 未指定 <head runat ="server"> 时在 HEAD 中插入文字控件?

asp.net - 如何获取 web.config appSettings 作为 ConfigurationSection 而不是 NameValueCollection

asp.net - 可空枚举值不显示在智能感知或设计 View 中

c# - 从流创建字节数组

c# - 检查 NotImplementedExceptions 的 FxCop 规则

c# - 如何读取枚举的文本值