我已经尝试解决这个问题两天了,我还没有在网上找到任何有用的东西。奇怪的是,这曾经有效..!在更改 Web 服务器上的一些设置后(不幸的是,我不记得确切的更改)它停止工作:(
这是发生的事情;
我在 aspx 页面上有一个隐藏字段,其值设置为 page_load (aspx.cs,代码隐藏)上的当前日期时间字符串(长日期时间字符串,包括秒数)。同时,这个随机值以相同的方法记录在下一行的会话变量中。
比(简单解释)我将此值发送到 Web 服务,在该服务中我检查此值与存储在会话变量中的值。你猜怎么着..有不一样的!这曾经有效,但不再有效,我不知道发生了什么变化或出了什么问题。由于这个字符串的值是日期时间值(以秒为单位),我可以看到这个值“大部分时间”改变了 2 秒。当我在 IIS 上调试代码时(通过附加工作进程),我可以看到从会话中恢复的值比从隐藏字段恢复的值晚 2 秒。
这在我的开发机器上工作,问题是,它不能在 Web 服务器上工作(Windows server 2008 r2)
我知道你可以提出一些替代方案,我自己也可以想到这种方法的替代方案,但我真的对解决这里的难题非常感兴趣......
任何帮助是极大的赞赏。
谢谢。
编辑:简单的方法
page_load 上的方法调用
addSecureString(System.DateTime.Now.Second.ToString());
记录变量的方法
protected void addSecureString(string s) {
string secureS = "111" + s;
Session.Add("securestring", secureS);
hdnss.Value = Session["securestring"].ToString();
}
在网络服务上
string tocheck = Session["securestring"];
hdnss -> 页面上隐藏字段的 id 注意:我正在使用日期时间的 Seconds 值,因为这是重要的部分并且正在改变..