2016-04-26 43 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忽略表单发布。 –