使用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);
}
}
非常感谢和抱歉我的英语。
答案 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
{
...
}
}