【问题标题】:File upload fails during recording using JMeter使用 JMeter 录制期间文件上传失败
【发布时间】:2014-01-21 20:14:50
【问题描述】:

我尝试使用端口 8888 在 JMeter 中记录文件上传,但在使用 JMeter 作为代理(记录控制器和 HTTP(S) 测试脚本记录器)时文件上传失败。我还尝试通过选择“开始”并查看我刚刚在 View Results Tree 侦听器中记录的内容从 JMeter 中运行它。当我以这种方式运行它时,我在 View Results Tree 侦听器中收到文件上传行的 500 错误。

所以,我在上传文件时运行了 Charles 网络代理,看看是否发生了同样的事情。它没有。我能够通过 Charles 网络代理在同一端口 8888 上成功上传文件。

另外,我把所有的代理都去掉了,文件上传成功了。

只有当我使用 JMeter 作为代理时,上传文件才会出现问题。

在 JMeter 中,在不做任何更改的情况下首次运行它后,我尝试更改许多设置,例如实现、内容编码、浏览器可兼容的标头、检索所有嵌入式资源以及许多其他设置,看看这是否会有所帮助,但确实如此不是。

所以,我的直觉告诉我有一个设置不正确。

我发现这篇文章讨论了在 HTTP 请求默认值中更改为使用“Java”。 (Unable to upload image/file when using Jmeter HTTP Proxy server)当我尝试这样做时,这对我没有帮助。 我发现这篇文章还提到了一些其他类型的东西(Unable to record an upload file scenario in JMeter though it is possible by manual effort with specific browser settings)。我确实对照查尔斯检查了标题,它们看起来一样。

有什么想法吗?

============= 下面编辑是添加测试计划屏幕截图===============

【问题讨论】:

    标签: proxy jmeter


    【解决方案1】:

    录制过程中需要将要上传的文件放在jmeter/bin文件夹中。

    这是由于不传输完整路径的浏览器的一些限制。

    【讨论】:

    • 修复了我在 AjaxFileUploadHandler.axd 行上的错误。但是,现在 /?contextKey=.... 行仍然有 500 错误。之前,我必须通过调整文件路径来手动修复 AjaxFileUploadHandler.axd 行以查找文件。这次我不必解决这个问题。但是,我被困在下一行的 500 错误的同一位置,即 /?contextkey=....
    • 如果解决了第一个问题,SO 中的过程是接受/支持答案。然后你开始另一个问题并给出详细信息,URL,Stacktrace ....
    • 这对我来说具有误导性。原来的问题依然存在。我从未在 AjaxFileUploadHandler 行上遇到 500 错误。我有一个找不到文件的错误。但是,在我开始这篇文章之前,我已经通过手动更改文件路径来解决这个问题。我没有因为找不到文件错误而开始这篇文章。我肯定会给你加分/赞成票,但是当 500 错误的原始问题仍然存在时,我还应该在这里这样做吗?
    • 提供有关您收到的回复的更多详细信息,以便我提供帮助,并显示您的测试计划屏幕截图
    • 线程名称:转换实用程序页面 1-1 示例开始:2014-01-22 07:16:53 EST 加载时间:19 延迟:19 字节大小:3660 标题字节大小:240 正文字节大小:3420 样本计数:1 错误计数:1 响应代码:500 响应消息:内部服务器错误响应标头:HTTP/1.1 500 内部服务器错误缓存控制:私有内容类型:文本/html; charset=utf-8 服务器:Microsoft-IIS/7.5 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2014 年 1 月 22 日星期三 12:16:53 GMT 内容长度:3420 HTTPSampleResult 字段:内容类型:文本/html; charset=utf-8 数据编码:utf-8
    【解决方案2】:

    因此,显然,我必须从“路径”行中删除参数并将它们移动到“使用请求发送参数:”对于我有 500 错误的行(屏幕截图中突出显示的行我附在上面)。

    总而言之,这就是发生的事情。当我使用记录控制器和 HTTP(S) 测试脚本记录器通过 JMeter 记录文件上传时,JMeter 已将所有参数放在 JMeter 为我记录的许多行上的“路径”字段中。我什至没有考虑 JMeter 自动为我完成的工作。因此,在我删除了“路径”字段中除“/”之外的所有文本并在“使用请求发送参数”下一次添加每个参数后,我在给我的行上收到了“200”状态代码问题。我还进入了所有其他行,并对参数进行了相同的更改。我仍然不确定文件上传是否真的有效,但我现在并不关心这一点,因为我确实在给我带来问题的线路上得到了“200”。这足以让我继续前进...... :-)。

    【讨论】: