会话变量丢失了从Jquery Dialog代码执行Url.action调用

时间:2014-11-12 15:30:20

标签: jquery asp.net asp.net-mvc jquery-ui session

对于在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");
                    }
                }
            });
        });

有谁知道造成这种情况的原因是什么?

0 个答案:

没有答案