Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3324|Resposta: 0

[Fonte] ASP.NET interface da API Core(23) NULL retorna código de status HTTP 204

[Copiar link]
Publicado em 20/08/2023 15:27:55 | | | |
Requisitos: Use ASP.NET Core 6 para criar um novo projeto de API Web para fornecer serviços externos, a interface pode retornar um objeto vazio ou uma string vazia, se retornar NULL, a resposta da interface é: 204 Sem Conteúdo, embora 204 represente o código de resposta normal (não há nada de errado com ele), mas,Alguns frameworks HTTP encapsulados consideram apenas o código de status 200 como normal。 Então, mude o código de status 204 para um código de status 200.

Código da interface:

O teste está mostrado abaixo:



A interface retorna um código de status HTTP 204 Sem Conteúdo devido às 4 implementações de formatação de saída adicionadas por padrão no ASP.NET Core:

  • Microsoft.AspNetCore.Mvc.Formatters.HttpNoContentOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StringOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.StreamOutputFormatter
  • Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter


O código-fonte do HttpNoContentOutputFormatter é o seguinte:



Nota:Se a interface retornar um tipo void, a Tarefa retorna um código de status HTTP 200porque ele não entra no método CanWriteResult em HttpNoContentOutputFormatter!! a partir daíSe o método CanWriteResult retornar true, ele passará pelo WriteAsyncMétodo.





solução

Remova a classe de implementação HttpNoContentOutputFormatter da coleção OutputFormatter com o seguinte código:

Acesse a interface novamente, teste da seguinte forma:

O tipo de retorno é string?, retorna um código de status 200 e não possui nenhuma saída
O tipo de retorno é object?, retorna um código de status 200 e gera null

(Fim)




Anterior:O contêiner Docker é baseado no aspnet:6.0 para instalar a ferramenta ping
Próximo:O navegador Windows Edge abre solução de travamento com IE
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com