【发布时间】:2016-02-29 15:50:37
【问题描述】:
所以代码:
const long testCount = 2;
const string jsonInput = "{\"blockId\":\"1\",\"userId\":\"{7c596b41-0dc3-45df-9b4c-08840f1da780}\",\"sessionId\":\"{46cd1b39-5d0a-440a-9650-ae4297b7e2e9}\"}";
Stopwatch watch = Stopwatch.StartNew();
using (var client = new WebClient())
{
client.Headers["Content-type"] = "application/json";
client.Encoding = Encoding.UTF8;
for (int i = 0; i < testCount; i++)
{
var response = client.UploadString("http://localhost:8080/BlocksOptimizationServices/dataPositions", "POST", jsonInput);
}
watch.Stop();
double speed = watch.ElapsedMilliseconds / (double)testCount;
Console.WriteLine("Avg speed: {0} request/ms", testCount);
对于性能测试,我只想多次致电client.UploadString("http://localhost:8080/BlocksOptimizationServices/dataPositions", "POST", jsonInput)。但是在第一次请求之后,它总是失败并出现
“远程服务器返回错误:(400) Bad Request。”
如果我处理 WebClient 并重新创建 - 可以,但这会增加额外的性能损失。为什么我不能重复使用 WebClient 两次?
【问题讨论】:
-
您是否在 Fiddler 运行的情况下运行了两次并比较了请求?后续请求清楚地到达服务器以接收 400 错误。