对于在Win7 x64上从VS 2013运行的IE10,我有一个非常奇怪的问题。
当我在互联网选项中点击OK时,会话仍然存在请求!当我重建应用程序时,它会中断。在互联网选项中再次点击确定将其恢复到正常工作状态,直到重建并继续运行。
到目前为止,我有:
- 设置IE以检查存储页面的较新版本:每次访问页面时
- 使用开发工具清除缓存
- 检查每个项目的目标.NET框架,它们是完整版本,而不是客户端配置文件
- 使用此代码停止了应用程序缓存
protected void Application_BeginRequest()
{
//Used for disabling page caching
HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
}
正在使用我在线
上找到的以下代码设置和检索会话变量public class SessionManager
{
//Session variable constants
public const string DATEFORMATVAR = "DisplayDateFormat";
//use generics to work with any type
public static T Read<T>(string variable)
{
object value = HttpContext.Current.Session[variable];
if (value == null)
return default(T);
else
return ((T)value);
}
public static void Write(string variable, object value)
{
HttpContext.Current.Session[variable] = value;
}
public static string DisplayDateFormat
{
get
{
return Read<string>(DATEFORMATVAR);
}
set
{
Write(DATEFORMATVAR, value);
}
}
是否有人知道可能导致会话丢失的原因,以及为什么浏览器设置中的确定可以使其正常工作?
感谢您阅读
更新
经过进一步调查后,我已经确定会话变量值从以下jQuery Dialog代码中丢失。我已经检查了url.action调用之前和之后的会话值,并且它在这里丢失了。
//jQuery Customer Selection from Customer Notes page
$("#cn-btn-cust-slt").button().click(function () {
$("#cn-dialog").dialog({
autoOpen: true,
position: { my: "left", at: "top+350", of: window },
width: 700,
height: 600,
resizable: false,
title: 'Customer Selection',
modal: true,
open: function () {
$(this).load('@Url.Action("CustNotesSearchJqDia", "Customer")');
},
buttons: {
Cancel: function () {
$(this).dialog("close");
}
}
});
});
有谁知道造成这种情况的原因是什么?