请求消息已经发送.不能多次发送相同的请求消息
本文关键字:请求 消息 不能 | 更新日期: 2023-09-27 18:15:47
我的代码有什么问题吗?我一直得到这个错误:
系统。InvalidOperationException:请求消息已经被发送。不能多次发送相同的请求消息。
我的HttpRequestMessage是在一个Func内,所以我想我得到一个全新的请求,每次我在Func()传递。
public async Task<HttpResponseMessage> GetAsync(HttpRequestMessage request)
{
return await RequestAsync(() => request);
}
public async Task<HttpResponseMessage> RequestAsync(Func<HttpRequestMessage> func)
{
var response = await ProcessRequestAsync(func);
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
WaitForSomeTime();
response = await ProcessRequestAsync(func);
}
return response;
}
private async Task<HttpResponseMessage> ProcessRequestAsync(Func<HttpRequestMessage> func)
{
var client = new HttpClient();
var response = await client.SendAsync(func()).ConfigureAwait(false);
return response;
}
两次调用同一个func
参数:
var response = await ProcessRequestAsync(func);
//...
response = await ProcessRequestAsync(func);
在本例中,func
每次都返回相同的请求。它不会每次调用都生成一个新的。如果你真的需要每次不同的请求,那么func
需要每次调用返回一个新消息:
var response = await GetAsync(() => new HttpRequestMessage()); // Create a real request.
public async Task<HttpResponseMessage> GetAsync(Func<HttpRequestMessage> requestGenerator)
{
return await RequestAsync(() => requestGenerator());
}
我有同样的问题,但在我的代码中没有重复。原来我在一个异步进程上添加了一个手表。当我逐步执行代码时,手表调用了进程,因此当我到达我试图调试的那一行时,它崩溃了,并显示了这个错误消息。去掉所有的手表解决了这个问题。把这个留给其他可能有同样问题的人。