2016-04-26 44 views
0

我有一個應用程序,通過瀏覽器正常使用時工作正常。ASP.Net MVC Modelbinder&Request.Form是空的,即使多部分/ MIME發佈

當試圖記錄或回放JMeter腳本時,應用程序停止工作,並且某些頁面以空模型結束。我已經通過wireshark確認表單數據在這些請求中發佈。

我將工作請求的wireshark與失敗的請求進行了比較,差異很小。

的主要原因之一是本

工作:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryyuuSWkmnnXJCTJzw 

失敗:

Content-Type: multipart/form-data; boundary=kAbx249hddVWzlxpSVyEMxcpc9waTo; charset=UTF-8 

邊界文本由JMeter的代理修改,和charset = UTF-8也被添加由代理。

我確認在實際的MIME數據中,兩種情況都使用了正確的邊界。

表單帖子中的所有其他標題,cookie,名稱都是完全相同的。

當我的行爲被擊中,該模型是空的(主要模型變量不爲空,但在該模型中的所有屬性的默認值)

在調試/即時窗口中,的Request.Form是空的。

? Request.Form 
{} 
    [System.Web.HttpValueCollection]: {} 
    base: {} 
    AllKeys: {string[0]} 

我可以使那些認爲他們會有幫助的wireshark捕獲可用。

回答

0
  1. 還有什麼區別?上面的內容應該是關鍵的,因爲它們匹配,邊界無關緊要。編碼 - 現在是2016年,每個行爲良好的應用程序都應該理解unicode。
  2. 如果您嘗試通過JMeter Chrome Extension來記錄您的測試,它會發生什麼?它不應該如此「侵入」?
+0

這絕對是編碼。我捕獲了工作請求,添加了編碼,並且打破了。 顯然發送UTF-8編碼(不需要更改有效負載)會導致IIS/ASP.Net忽略表單發佈。 –