C# 如何在aspnetcore 3.1中通过中间件编写HttpResponseMessage

C# 如何在aspnetcore 3.1中通过中间件编写HttpResponseMessage,c#,middleware,httpresponsemessage,C#,Middleware,Httpresponsemessage,我有一个中间件,它根据特定的路由执行,并将请求重定向到调用另一个服务,服务调用的响应需要发送回调用方 public Task Invoke(HttpContext context) { return GetServiceDataAsync(context); } private async Task<object> GetServiceDataAsync(HttpContext context) { var respon

我有一个中间件,它根据特定的路由执行,并将请求重定向到调用另一个服务,服务调用的响应需要发送回调用方

public Task Invoke(HttpContext context)
    {
       return GetServiceDataAsync(context);
    }

    private async Task<object> GetServiceDataAsync(HttpContext context)
    {
        var response = service.GetDataAsync();

        return await response;
    }
公共任务调用(HttpContext上下文)
{
返回GetServiceDataAsync(上下文);
}
专用异步任务GetServiceDataAsync(HttpContext上下文)
{
var response=service.GetDataAsync();
返回等待响应;
}
执行此调用时,我确实看到服务调用正确返回响应。但是,响应不会作为HttpResponseMessage写回,因此调用方可以再次读取正文


在本例中,已读取响应并将其转换为响应。需要一些关于如何向调用者提供相同响应的指针。有了这个代码,我看到了200个状态代码,但是身体是空的。蒂亚

如果主体为空,则表示连接的另一侧未添加主体。您正在使用HTTP协议,其中客户端发送请求,服务器接收请求,服务器发送响应,最后客户端接收响应。控制器解析接收到的消息(在服务器或客户端上),任务是解析接收到的消息的规则。因此,当您在接收端解析失败时,要么接收到的消息未发送,要么接收到的消息不符合接收消息的预期格式。这很有意义。在本例中,对其他服务(service.GetDataAsync())的调用已读取httpresponsemessage并将响应转换为Task并成功返回。但是,没有向主体添加相同的响应,这解释了调用方缺少主体的原因。