この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3324|答える: 0

[出典] ASP.NET Core(23) API インターフェース NULL は HTTP 204 ステータスコードを返します

[リンクをコピー]
掲載地 2023/08/20 15:27:55 | | | |
要件:Core 6 ASP.NET 外部サービスを提供する新しいWeb APIプロジェクトを作成する場合、インターフェースは空のオブジェクトや空の文字列を返すことがあります。NULLを返す場合、インターフェースの応答は次の通りです:204 No Content(ただし204は通常のレスポンスコードを表しますが、問題はありません)、カプセル化されたHTTPフレームワークの中には、200ステータスコードのみを正常とみなすものもあります。 204ステータスコードを200ステータスコードに変更してください。

インターフェースコード:

以下にテストの様子を示します:



インターフェースは、ASP.NET Coreにデフォルトで追加されている4つの出力フォーマット実装のためにHTTP 204 No Contentステータスコードを返します。

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


HttpNoContentOutputFormatterのソースコードは以下の通りです:



手記:インターフェースがvoid型を返す場合、TaskはHTTP 200の状態コードを返しますなぜなら、それはHttpNoContentOutputFormatterのCanWriteResultメソッドに入っていないからです!! さあ、CanWriteResultメソッドがtrueを返す場合、WriteAsyncを経由します方式。





解決

以下のコードでOutputFormattersコレクションからHttpNoContentOutputFormatterの実装クラスを削除します:

再度インターフェースにアクセスし、以下のようにテストします:

返還タイプはstring?で、200のステータスコードを返し、出力はありません
返還タイプはobject?で、200のステータスコードを返し、nullを出力します

(終わり)




先の:Dockerコンテナはpingツールをインストールするためにaspnet:6.0をベースにしています
次に:Windows EdgeブラウザがIEでクラッシュソリューションを開く
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com