Context.User.Identity.Name
始终为空,目前我正在使用WebForms:
HttpCookie cookie = new HttpCookie("jamal");
cookie.Value = "bilal";
HttpContext.Current.Response.Cookies.Add(cookie);
我想要用户名:
public override Task OnConnected()
{
AddUser(Context.User.Identity.Name, this.Context.ConnectionId);
}
private static void AddUser(String username, String connectionId)
{
ISet<String> connections;
if (users.TryGetValue(username, out connections) == false)
{
connections = users[username] = new HashSet<String>();
}
connections.Add(connectionId);
}
答案 0 :(得分:1)
这是因为您尚未对此操作进行身份验证
要求用户通过使用Authorize
属性类进行装饰来授权该操作,这将启动身份验证协商。
我从来没有尝试过使用webform,但是如果你在web配置中加入这条规则它应该可行:
<authentication mode="Forms" />
答案 1 :(得分:0)
尝试在Page_Load事件上调用它,你可能很快就会调用它。
答案 2 :(得分:0)
您创建Cookie的方式,它不是身份验证Cookie。如果您创建一个新的asp.net Web表单项目,Asp.net将为您处理身份验证过程。但是,如果您要创建自己的身份验证Cookie,则必须遵循these are the steps。
来自asp.net的FormsAuthenticationModule通过检查身份验证票证来验证用户。您的cookie只有一个名称。您必须创建票证。 Also check this link