当用户登录时,我想将他的userID存储在会话中
HttpContext.Current.Session["UserID"] = 2354; (this is just a hard-coded example)
Run Code Online (Sandbox Code Playgroud)
然后,当我运行页面方法时,如果我这样做
var test = HttpContext.Current.Session["UserID"];
Run Code Online (Sandbox Code Playgroud)
变量测试会保存我登录时存储的值吗?
如果这是一种正确的方法,当我从页面方法接收呼叫时如何访问会话?我想在页面方法中放置test = ...行,以确定请求来自哪个用户.
谢谢.
正如已经回答的那样,是的 - 应该没问题,但如果您在使用此方法 [WebMethod] 调用服务之前在页面上停留太久,它将失败。在这种情况下,最佳实践是检查会话并根据需要进行重建。对于任何其他身份验证也是如此,以确保它们不会变得不同步或过期。
[WebMethod(EnableSession = true)]
HttpContext context = HttpContext.Current;
if (context.Session["UserID"] == null) {
Utilites.PopulateSessionVars(context.Request.ClientCertificate, context.Request.ServerVariables["REMOTE_ADDR"]);
}
String userId = context.Session["UserID"].ToString();
Run Code Online (Sandbox Code Playgroud)
(其中 Utilities.PopulateSessionVars 是一种根据您用于登录的任何内容重建会话数据的方法......在我的例子中是 PKI 证书)
| 归档时间: |
|
| 查看次数: |
9926 次 |
| 最近记录: |