C# 当我在get Response请求取消和抛出异常之前发送请求时,我在asp.net内核中使用Masstransit请求响应

C# 当我在get Response请求取消和抛出异常之前发送请求时,我在asp.net内核中使用Masstransit请求响应,c#,.net-core,masstransit,request-response,C#,.net Core,Masstransit,Request Response,我正在Asp.NetCore 当我在收到响应之前发送请求时,请求被取消并引发此异常 System.Threading.Tasks.TaskCanceledException: A task was canceled. 我已经下载了masstransit代码,并用它调试了我的项目。 我理解ClientRequestHandledispose和cancel请求,然后才收到回复 我检查了使用者端,它工作正常,并按预期发送响应。使用RequestHandle时,您需要保留对句柄的引用,直到请求完成并收

我正在
Asp.NetCore
当我在收到响应之前发送请求时,请求被取消并引发此异常

System.Threading.Tasks.TaskCanceledException: A task was canceled.
我已经下载了
masstransit
代码,并用它调试了我的项目。 我理解
ClientRequestHandle
dispose和cancel请求,然后才收到回复


我检查了使用者端,它工作正常,并按预期发送响应。

使用
RequestHandle
时,您需要保留对句柄的引用,直到请求完成并收到响应(或出现超时或故障)

您可以使用单线法简化此过程,方法如下:

var response = await requestClient.GetResponse<T>(request);
var response=wait requestClient.GetResponse(请求);
如果您需要向请求中添加一些内容,如标题等,那么您需要保留句柄,直到它完成为止

using(var handle = requestClient.Create(request))
{
    var response = await handle.GetResponse<T>();
}
使用(var handle=requestClient.Create(request))
{
var response=await handle.GetResponse();
}

谢谢Chris。但是在恢复响应后引发异常。这是我的代码:尝试{using(var handle=_getOrderInfoRequestClient.Create(new getHirdPersonInsuranceProductAmountCommand(productId)){var response=wait handle.GetResponse();如果(!response.Message.issucess)抛出新的域异常(response.Message.Message);返回Convert.ToDecimal(response.Message.ResponseValue.Value);}}}catch(异常ex){throw;}