SWFUpload参数未发布

时间:2012-01-21 05:14:47

标签: asp.net-mvc azure swfupload

我正在开发一个ASP.NET MVC 3应用程序,我正在使用SWFUpload来提供基于ajax的文件上传。生产环境是Windows Azure。在IISExpress和Windows Azure模拟器下运行的本地盒子上一切正常。但是当我将它发布到Azure时,我得到 ArgumentException,声明参数字典包含空条目。

这是通过查看来源的post_params片段。

post_params: {
   surveyResponseId: '1918f3c3-0764-4a6a-a308-5d2180ca2eb1',
   personId: 'f5fce116-f059-48bc-be79-ad859259ffd8',
   surveyId: 'd1fa576d-d348-43e3-82ce-952f74fb0d72'
 }

当我用Fiddler2查看操作时,我得到状态码为504.其他研究表明504是Fiddler说它有问题。但我可以检查请求,它包括所有发布的参数。


POST http://...
Accept: text/*
Content-Type: multipart/form-data; boundary=----------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
User-Agent: Shockwave Flash
Content-Length: 109580
Connection: Keep-Alive
Pragma: no-cache

------------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
Content-Disposition: form-data; name="Filename"

myimage.jpg
------------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
Content-Disposition: form-data; name="surveyResponseId"

1918f3c3-0764-4a6a-a308-5d2180ca2eb1
------------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
Content-Disposition: form-data; name="surveyId"

d1fa576d-d348-43e3-82ce-952f74fb0d72
------------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
Content-Disposition: form-data; name="personId"

f5fce116-f059-48bc-be79-ad859259ffd8
------------GI3cH2ei4Ef1Ij5Ij5cH2Ef1GI3GI3
Content-Disposition: form-data; name="Filedata"; filename="myimage.jpg"
Content-Type: application/octet-stream

有什么想法吗? 谢谢,

2012年1月1日更新

如果删除参数和操作方法签名,文件将成功上传。

2 个答案:

答案 0 :(得分:0)

有时,如果文件太大,IIS可能会阻止文件上传。您可以更改web.config中允许的最大文件大小,如此链接所示。 http://www.websupergoo.com/helpupload50/source/2-tech_notes/3-web.config.htm。这可能是您的问题,也可能不是,但值得一试。

答案 1 :(得分:0)

仍然不确定问题究竟是什么,但我确实找到了解决方法。问题出在模型绑定中。如果我从Action方法中删除参数,然后使用Request对象提取文件和表单属性

            var workItemId = Request.Form["surveyResponseId"];
            var arrivalId = Request.Form["surveyId"];
            var personId = Request.Form["personId"];
            var file = Request.Files[0];

因此正确地发布了所有必需的值,只是模型绑定无法正确地将它们与参数相关联。仍然不确定为什么它在测试中起作用,但不在生产中。