SignalR - 无法获取用户名

时间:2016-06-26 20:22:17

标签: jquery asp.net-mvc-5 signalr

使用SignalR构建聊天应用程序,我是SignalR的新手,以Tutorial: Getting Started with SignalR 2 and MVC 5

开头

一切都顺利通过,现在我想要使用Application User Name作为发件人,当我使用这样的方法时:

$('#displayname').val('@Context.User.Identity.Name');

Hub获取用户名的当前信息并在页面上显示,这是我的Hub代码:

[HubName("chatHub")]
public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }

}

现在我想用另一种方法表示impliment用户名,这个方法被描述为Here

以下代码不起作用,任何人都可以解释为什么,我想知道如何使用SingalR的方法。 这是不起作用的代码:

[HubName("chatHub")]
public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        name = Context.User.Identity.Name;
        Clients.All.addNewMessageToPage(name, message);
    }

}

非常感谢和抱歉我的英语。

1 个答案:

答案 0 :(得分:1)

在你的启动课中你是否配置了auth?

有这样的事情:

    public void Configuration(IAppBuilder app)
    {
        var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true };
        ConfigureAuth(app);
        app.MapSignalR(hubConfiguration);
    }

使用身份验证创建新的MCV项目时,将自动生成以下代码。

    public void ConfigureAuth(IAppBuilder app)
    {

        // Configure the db context, user manager and signin manager to use a single instance per request
        app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create);
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
        app.CreatePerOwinContext<AppRoleManager>(AppRoleManager.Create);

        // Enable the application to use a cookie to store information for the signed in user
        // and to use a cookie to temporarily store information about a user logging in with a third party login provider
        // Configure the sign in cookie
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {

             ...
        }
}