2014-10-08 43 views
0

我想在VB.NET做組合使用JavaScript異步文件上傳與一個WebMethod.NET的WebMethod與xhrHttpRequest文件上傳

的JavaScript:

xhr.open('POST', "upload.aspx/upload", true); 
xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); 

var formData = new FormData(); 

// append the files 
for (var i in files) { 
    formData.append(base.el.name, files[i]); 
} 

xhr.send(formData); 

VB.NET:

<Web.Services.WebMethod(enableSession:=True)> _ 
Public Shared Function upload() As String 
    Return "Hello World!" 
End Function 

如果我使用內容類型=應用程序/ x-WWW窗體-urlencoded,或的multipart/form-data的 WebMethod沒有被擊中,如果我使用content-type = application/json,WebMethod被擊中,但是響應是一個500的消息:無效的JSON基元:------ WebKitFormBoundary ...

有沒有辦法讓AJAX WebMethod可以使用多部分表單數據?

回答

1

似乎.NET將不允許的multipart/form-data的爲內容類型:

JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks1

有一個內置保護的驗證層ASP.NET 針對基於GET和POST的ASP.NET AJAX網絡方法實施,其中 是不管使用何種HTTP動詞,ASP.NET總是 要求將HTTP內容類型標頭設置爲值 application/json。它不會發送此內容類型標頭,AJAX將拒絕服務器上的請求。

似乎是最好的辦法是這樣的使用通用ashx的文件,而不是

處理