ASP.NET - Uploadify可以在IE中运行,而不是在FF(Auth Cookies)中运行

时间:2012-03-21 16:50:49

标签: asp.net cookies webforms uploadify

我有一个WebForms应用程序,我正在尝试使用uploadify jquery库。

它在IE8中工作正常,但不在FF7,FF10或FF3中。放入Upload.ashx的断点没有被击中。

我做了很多搜索,发现它与cookie有关,就像ASPXAUTH一样。我尝试将其添加到'scriptData',但没有成功。

有什么想法吗?

网页代码:

<script type="text/javascript">

    $(document).ready(function () {


        alert($(".hidcook").val());
        // <![CDATA[
        var id = "55";
        var theString = "asdf";

        $('#fileInput').uploadify({
            'uploader': 'uploadify/uploadify.swf',
            'script': 'Upload.ashx',


            'scriptData': { 'id': id, 'foo': theString },
            'cancelImg': 'uploadify/cancel.png',
            'auto': true,
            'multi': true,
            'fileDesc': 'All Files',

            'queueSizeLimit': 90,

            'buttonText': 'Importar Planilha',
            'folder': '/uploads',
            'onAllComplete': function (event, queueID, fileObj, response, data) {
            }
        });
    });
   // ]]></script>

Upload.ashx:

 public class Upload : IHttpHandler, IRequiresSessionState{

        public void ProcessRequest(HttpContext context)
        {
            try
            {
                HttpPostedFile file = context.Request.Files["Filedata"]; //breakpoint

                int id = (Int32.Parse(context.Request["id"]));
                string foo = context.Request["foo"];
                file.SaveAs("C:\\" + id.ToString() + foo + file.FileName);

                context.Response.Write("1");
            }
            catch (Exception ex)
            {
                context.Response.Write("0");
            }
        }

2 个答案:

答案 0 :(得分:1)

如果您的网站内容不公开,请添加到处理程序的web.config授权访问权限。

<location path="Upload.ashx">
   <system.web>
     <authorization>
       <allow users="*"/>
     </authorization>
   </system.web>
 </location>

浏览器通过Flash组件实现文件上传的方式存在一些差异 IE使用相同的会话。 FF打开一个新连接,因此服务器会看到一个试图访问受保护页面的未经验证的用户。

答案 1 :(得分:0)

我在使用MVC时出现问题,其中up​​loadify没有发布到控制器操作。

这是由于身份验证问题。 Flash由于某种原因为浏览器创建了自己独立的cookie,因此如果用户已经使用浏览器(ASPXAUTH)cookie进行了身份验证,那么swf文件会使用它自己的flash cookie(尚未经过身份验证)发出单独的请求。

运行fiddler查看发生了什么,您可能会发现uploadify正在进行的服务器请求被重定向到login.aspx页面。

虽然我不知道为什么这会在IE中起作用?