C# 在ASP.NET MVC3 w/jquery.cookies和IIS6路径下删除Cookie时出现问题

C# 在ASP.NET MVC3 w/jquery.cookies和IIS6路径下删除Cookie时出现问题,c#,jquery,asp.net-mvc-3,jquery-blockui,C#,Jquery,Asp.net Mvc 3,Jquery Blockui,最近,我在研究如何在Excel电子表格中下载大量数据时向用户提供进度指示器或忙碌指示器。对于约3000行,这大约需要9-10秒,因此需要一些东西让用户感到有趣 我首先研究了使用blockUI,这很好,但我遇到的问题是如何在收到文件确认后解除对UI的阻止。我读了一篇好文章: 所以我最终使用了jquerycookie和blockUI。我还有一个动画gif,由于某些原因,它在Firefox下不会显示,但在IE8下会显示!!!!。完全不同的问题 从表面上看,这篇文章中的代码是有效的。我做了一个测试应用程

最近,我在研究如何在Excel电子表格中下载大量数据时向用户提供进度指示器或忙碌指示器。对于约3000行,这大约需要9-10秒,因此需要一些东西让用户感到有趣

我首先研究了使用blockUI,这很好,但我遇到的问题是如何在收到文件确认后解除对UI的阻止。我读了一篇好文章:

所以我最终使用了jquerycookie和blockUI。我还有一个动画gif,由于某些原因,它在Firefox下不会显示,但在IE8下会显示!!!!。完全不同的问题

从表面上看,这篇文章中的代码是有效的。我做了一个测试应用程序,一切都很好,但当我把它应用到我正在编写的应用程序中时,它将无法删除cookie。结果是,它不像我在酒吧里有完整的url:

^^Global.asax.cs已更改,因为此应用程序将部署在IIS6上

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}.aspx/{action}/{id}",
            //"{controller}/{action}/{id}", // URL with parameters
            new { action = "Index", id = "" } // trying for IIS6
            //new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

        // New - trying for IIS6
        routes.MapRoute(
            "Root",
            "",
            new { controller = "Home", action = "Index", id = "" }
            );
    }
    /*

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }     // Parameter defaults
        );

    }
     * */
在控制器中,对于索引操作,我有:

    public ActionResult Index()
    {
        return View();
    }
在家庭控制器中,我有一个方法,我假装发回一个文件。它还将cookie fileDownloadToken的值设置为export

    public ActionResult GetFile()
    {
        Thread.Sleep(5000);
        byte[] test = new byte[1000];
        this.Response.AppendCookie(new HttpCookie("fileDownloadToken", "export"));
        return File(test, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "test.xlsx");
    }
“索引”视图的内容包括:

@{
    ViewBag.Title = "Home Page";
}

<input id="save_button" type="button" value="Get" onclick='window.location.href=("@Url.Action("GetFile")")' />

<script type="text/javascript">

$(document).ready(function () {
    $('#save_button').click( function () {
        $.blockUI({
            message: $('#loading')
        });
        blockUIForDownload();
    });       

});

var fileDownloadCheckTimer;
function blockUIForDownload() {
    fileDownloadCheckTimer = window.setInterval(function() {
        var cookieValue = $.cookie('fileDownloadToken');
        if (cookieValue == "export")
            finishDownload();
        }, 100);
}

function finishDownload() {
        window.clearInterval(fileDownloadCheckTimer);
        $.cookie('fileDownloadToken', null);
        $.unblockUI();
    }

</script>

<div id="loading" style="display: none;">
    <br />
    <img src="@Url.Content("~/Content/Images/loading.gif")" /><br />
    <h2>Exporting, Please Wait...</h2>
</div>
现在,正如我上面所说,当您直接浏览到由VS2010指定的localhost时,它可以工作,但当您浏览到localhost:/Home.aspx/Index时,它会失败


我使用IE8上的开发人员工具进行调试,并使用alert's etc来提醒cookie的值,即使调用$.cookieXXXX,null,cookie值仍然保持不变。我想,如果这是某种路径/域问题,那么你根本无法获得cookie的值,因此恰恰相反,在你按下按钮后,UI会立即解锁,但是

FYI,我已经修复了它,在这一整天无所事事之后,最后在这里发布。最后,我使用以下命令删除了cookie:$.cookie'fileDownloadToken',null,{path:'/'};仅供参考,我已经修好了,经过一整天的胡闹,终于在这里发布了。最后,我使用以下命令删除了cookie:$.cookie'fileDownloadToken',null,{path:'/'};