C# asp.net core 3.1写入响应正文对于状态代码为204的响应无效

C# asp.net core 3.1写入响应正文对于状态代码为204的响应无效,c#,asp.net-core,swagger,kestrel-http-server,swashbuckle.aspnetcore,C#,Asp.net Core,Swagger,Kestrel Http Server,Swashbuckle.aspnetcore,我正在使用asp.NET3.1和Swagger(swashback.AspNetCore)5.4.1生成api文档。我有一个api,它使用DELETE方法删除资源并返回NoContent(204)如下响应: [HttpDelete("{id:guid}")] public async Task<ActionResult> DeleteAsync(Guid id) { var existedEntity = await _di

我正在使用asp.NET3.1和Swagger(swashback.AspNetCore)5.4.1生成api文档。我有一个api,它使用
DELETE
方法删除资源并返回
NoContent(204)
如下响应:

    [HttpDelete("{id:guid}")]
    public async Task<ActionResult> DeleteAsync(Guid id)
    {
        var existedEntity = await _discountCodePolicyRepository.GetAsync(id, HttpContext.RequestAborted);

        if (existedEntity == null)
            return NotFound();

        await _discountCodePolicyRepository.DeleteAsync(existedEntity, HttpContext.RequestAborted);

        return NoContent();
    }
[HttpDelete(“{id:guid}”)]
公共异步任务DeleteAsync(Guid id)
{
var existedEntity=await _discountCodePolicyRepository.GetAsync(id,HttpContext.RequestAborted);
if(existedEntity==null)
返回NotFound();
wait _discountCodePolicyRepository.DeleteAsync(ExisteIdentity,HttpContext.RequestAborted);
返回NoContent();
}
从swagger UI可以很好地工作,但当从我们的客户(网站)调用时,抛出blow异常:

System.InvalidOperationException:写入响应正文对于状态代码为204的响应无效。模块“Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol”,通过编写响应数据库不支持模块“Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol”,在FirstWriteAspnetcore.Server.Kestrel.Core.Internal.Http.HttpProtocol内部模块“Microsoft.AspNetCore“Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol”,在移动同步模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中的写入同步模块“Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol”,在抛出模块中的写入同步模块“Microsoft.AspNetCore.WebUtilities.PagedByteBuffer”System.Runtime.CompilerServices.TaskAwaiter“,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中,在HandleNonSuccessAndDebuggerNotification模块“Microsoft.AspNetCore.WebUtilities.FileBufferingWriteStream”中,在DrainBufferAsync模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在Throw模块中”System.Runtime.CompilerServices.TaskAwaiter”,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中,在HandleNonSuccessAndDebuggerNotification模块“Microsoft.AspNetCore.Mvc.Formatters.NewtonSofJSONOutputFormatter”中,在Throw模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在Throw模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中Microsoft.AspNetCore.Mvc.Formatters.NewtonSofJSONOutputFormatter”,在HandleNonSuccessAndDebuggerNotification模块中,在“System.Runtime.ExceptionServices.ExceptionDispatchInfo”的WriteResponseBodyAsync模块中,在“System.Runtime.CompilerServices.TaskAwaiter”的抛出模块中,在“System.Runtime.CompilerServices.TaskAwaiter”模块中,在“System.Runtime.CompilerServices.TaskAwaiter”中Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d”,在HandleNonSuccessAndDebuggerNotification模块的MoveNext模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d”,在HandleNonSuccessAndDebuggerNotification模块的MoveNext模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d”,在HandleNonSuccessAndDebuggerNotification模块的MoveNext模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中Microsoft.AspNetCore.Routing.EndpointMiddleware+d”,在HandleNonSuccessAndDebuggerNotification模块的MoveNext模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在ThrowForNonSuccess模块“System.Runtime.CompilerServices.TaskAwaiter”中Swashback.AspNetCore.SwaggerUI.SwaggerUI中间件”,在调用模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskWaiter”中,在HandleNonSuccessAndDebuggerNotification模块“System.Runtime.CompilerServices.TaskWaiter”中Swashbuckle.AspNetCore.Swagger.Swagger中间件”,在调用模块“System.Runtime.ExceptionServices.ExceptionDispatchInfo”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在抛出模块“System.Runtime.CompilerServices.TaskAwaiter”中,在HandleNonSuccessAndDebuggerNotification模块“System.Runtime.CompilerServices.TaskAwaiter”中Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.httprotocol+d_u214`1“,在MoveNext中

我用谷歌搜索了一下,但没有发现任何有用的东西

更新:

查看更多详细信息后。此项目是一个用于管理折扣代码的微服务。在微服务中,我成功地从其swaggerUI中删除了折扣代码,并获得204状态代码。但当从ApiGateway swaggerUI调用时,抛出异常消息:

System.invalidoOperationException:响应内容长度不匹配:写入的字节太少(0个,共23个)。
我认为这个异常会导致微服务异常,因为管道无法完成。
我检查了api网关,没有中间件可以在调用下游后添加内容。我正在使用api网关的
ocate

204状态码意味着没有内容,你为什么要添加一些内容?你是否有某种中间件或过滤器可以在之后添加任何内容?@Haytam从swagger ui调用时可以。你必须处理e DeleteAsync之外的NoContent。只有当您获得内容时,您的代码才会获得NoContent。在请求中,您必须指定要删除的项目。因此,您正在发送一篇文章,正文指示您正在执行的查询类型(删除)和您要删除的项目的id。错误指示正文包含零字节,但您正在请求内容长度为2