互联网资源管理器ashx文件问题

时间:2010-04-13 20:11:54

标签: c# asp.net jquery internet-explorer httphandler

我的问题有点复杂: 我在c#,asp.net和使用jquery

写作
  1. 我有一个发送请求的页面 服务器使用jquery的ajax 方法
  2. 我有一个ashx文件(处理程序) 回应这些要求。
  3. 用户可以执行多项更改 几页,然后使用一些方法 这会调用ajax方法。
  4. 我的ashx文件读取了一些值 会话变量和行为 相应地。
  5. 这适用于所有浏览器,但在Internet Explorer中。 在Internet Explorer中,会话似乎包含旧信息(旧用户ID)。令人难以置信的是,相同的代码在firefox,chrome和safari中运行良好,但是没有使用ie。

    可能导致什么?我不知道哪里可以开始寻找解决方案。

    顺便说一句,对于一般的标题,对不起,怎么用几句话就无法解释。

    以下是jquery代码和ashx:

    jquery的

    function SendRequstToServer(actionId, additional, callback) {
        if (actionId == "-1") {
            document.location = "default.aspx";
        }
        $.ajax({ url: "SmallRoutinesHandler.ashx", method: "GET",
        //asyn: false,
            data: "Action=" + actionId + additional,
            contentType: "string",
            error: function(xhr, status, errorThrown) {
                alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
            },
            success: function(data) {
                alert(data);
                callback(data);
            }
        });
    }
    

    ASHX

    context.Response.ContentType = "text/plain";
    action = context.Request.QueryString["Action"];
    switch ((ClientSideActionsRequest)Enum.Parse(typeof(ClientSideActionsRequest), action))
    {
        case ClientSideActionsRequest.ShowProducts:
        long userId = WebCommon.CurrentlyWatchedUser.Id;
        List<UserItems> userItems = UserItems.GetByUserId(userId);
        string[] items = HtmlWrapper.WrapAsItems(userItems);
        if (items.Length > 0)
        {
             context.Response.Write(items.Aggregate((current, next) => string.Format("{0} , {1}", current, next)));
        }
        break;
    }
    

    谢谢!

2 个答案:

答案 0 :(得分:1)

你能更具体一点吗?这里有一些可能出错的东西 - 它是在浏览器上缓存,还是在服务器上调试时,是否显示Session的旧值?

确保将jQuery .ajax调用的缓存选项设置为false。您可能还希望看到有关IE的ajax缓存的侵略性的this question and answer

答案 1 :(得分:1)

您只需在false中使用cache参数。

 $.ajax({ 
     url: "url",
     cache: false,
     ....

Example Fiddle