【发布时间】:2016-07-07 20:32:20
【问题描述】:
我有一个问题,希望有一个我忽略的简单解决方案...这是我第一次将文件上传参数与 Visual Studio 性能测试工具一起使用。当我第一次运行 Web 性能测试时,我的测试找到了该文件并按预期上传了它。但是,当我现在重新运行测试时,我在结果的“详细信息”部分中收到 500 Internal Server 错误,并且我注意到我的文件名包含似乎是请求中正确名称前缀的时间戳。由于我的文件名没有改变,这会导致 Visual Studio 无法找到我的文档。
我为此测试生成了代码,因为我需要手动重置 SSL 设置。我的文档被移到了 Test Results 文件夹,因为我用它作为 DeploymentItem 装饰了该方法。当我生成代码时,Visual Studio 会自动执行此操作,这非常好,但可能是问题所在......任何帮助将不胜感激!这是我正在发出的 POST 请求:
WebTestRequest request11 = new WebTestRequest((this.Context["Environment"].ToString() + "/Submit/Upload"));
request11.Method = "POST";
request11.Headers.Add(new WebTestRequestHeader("Referer", (this.Context["Environment"].ToString() + "/Submit/Index/fakefolder456")));
FormPostHttpBody request11Body = new FormPostHttpBody();
request11Body.FormPostParameters.Add(new FileUploadParameter("files", "Test3.pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation", true));
request11Body.FormPostParameters.Add("folderId", "fakeId123");
request11Body.FormPostParameters.Add("fileNamePairs", "[{\"OriginalFileName\" : \"Test3.pptx\",\"NewFileName\" : \"Test3.pptx\"}]");
request11Body.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString());
request11.Body = request11Body;
yield return request11;
request11 = null;
【问题讨论】:
-
哪个文件名?显示的代码中有 3 个
Test3.pptx。还有OriginalFileName和NewFileName。测试运行时的请求和响应是什么? -
我只是出于调试/诊断的原因将 Web 测试转换为代码。我需要的其他一切都通过插件更好地完成了。转换为代码使测试的其余部分更难管理和修改。如果您确实需要通过转换为 C# 代码来完成整个请求,那么我建议使用 Web 测试的上下文(右键单击)菜单命令
Extract web test然后转换该请求。 -
你知道我是否可以使用插件设置请求 SecurityProtocolType 吗?我以前从未使用过插件,但会研究...我必须添加这行代码才能使我的性能测试正常工作,这指示我请求使用 TLS 1.2 进行 SSL 加密:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; -
插件,恕我直言,总体上比转换为编码测试要容易得多。我想不出为什么
ServicePointManager... = ...代码不能在插件中使用。 -
谢谢阿德里安HHH!我自学了如何使用这些插件,而且效果很好。你是对的 - 这是一个比生成代码更好的设计
标签: visual-studio-2015 performance-testing