Ris*_*shi 4 .net c# sharepoint
我正在使用以下方法将全局变量保存在单独的类文件中,以便它们可以在少数后端类中传递.问题是当系统在多用户环境中使用时失败.我无法选择"会话"方法,因为管理员尚未准备好在SharePoint服务器上启用会话状态.
static class Global
{
private static string id = string.Empty;
public static string id
{
get { return id; }
set { id = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从上面的代码中删除静态声明,它会在多用户场景中正常工作吗?如果不向服务器管理员寻求任何帮助,我还有哪些其他选择.
不要static用于每个用户或每个请求的东西; static在Web应用程序中非常罕见,但有时可能会用于保存整个系统配置的快照(最好是不可变的).
那么:我们在哪里可以存放东西?
会话状态将是每个会话(并且这里是线索)的明显答案,但听起来这不是一个选项
除此之外,你基本上有:http请求.这意味着您可以访问表单,查询字符串和cookie.而就是这样.您不希望在cookie中存储太多内容:它会使每个请求都膨胀.而"观点状态"只是邪恶的.如果常规会话状态不可行,你可以根据一些cookie(适当安全)做一些家庭酿造"会话"实现,但坦率地说,我认为你做得很好:
id您的静态变量将在所有用户之间共享,并且不属于特定用户.使用静态变量来保持Web环境中的状态几乎总是一个坏主意.
如果您无法启用会话状态,那么一个好的策略是:
这样你基本上可以重新发明会话状态; 但是你要避免全局启用会话状态.如果状态足够小,您还可以将其编码到URL中.
还要考虑Session状态在服务器场环境中不能正常工作,除非您将其存储在共享服务器上 - 这可能是您的管理员不倾向于启用它的原因.
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |