2012-01-21 70 views
0

我正在開發一個ASP.NET MVC 3應用程序,我正在使用SWFUpload提供基於AJAX的文件上傳。生產環境是Windows Azure。在IISExpress和Windows Azure模擬器下運行的本地盒子上,它都可以正常工作。但是,當我將它發佈到Azure時,我會得到ArgumentException聲明參數字典包含空條目。SWFUpload參數不被張貼

查看源文件,查看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提琴手說這是有問題。但是我可以檢查請求幷包含所有發佈的參數。


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-JAN-01

文件被成功地上傳。

回答

0

仍然不確定問題的真正原因,但我找到了解決方法。問題出在模型綁定的某個地方。如果我從Action方法中刪除參數,然後使用Request對象來提取它的文件和表單屬性

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

因此,所有需要的值都正確發佈,它只是模型綁定無法正確地將它們與參數相關聯。仍然不確定它爲什麼在測試中起作用,但不在生產中。

0

有時如果文件太大,IIS可以阻止文件上傳。您可以更改web.config中允許的最大文件大小,如此鏈接所示。 http://www.websupergoo.com/helpupload50/source/2-tech_notes/3-web.config.htm。這可能是也可能不是你的問題,但它值得一試。

+0

感謝您的回答。我正在使用的文件大約爲100K,所以我希望Azure的默認值不會太小。但我會檢查出來。 – Rick

+0

對web.config進行建議的更改。由於缺少發佈的參數,仍然出錯。我想我會改變代碼,不需要額外的參數,看看我是否自己獲取文件。 – Rick