問題タブ [frombodyattribute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
60 参照

asp.net-mvc - 複数のコンテンツ タイプを同じアクションにルーティングしてバインドすることはできますか?

マイクロソフトのドキュメントから:

既定では、モデル バインディングは、HTTP 要求で次のソースからキーと値のペアの形式でデータを取得します。

  1. フォーム フィールド
  2. リクエストボディ ([ApiController] 属性を持つコントローラーの場合)
  3. ルートデータ
  4. クエリ文字列パラメーター
  5. アップロードされたファイル

を使用せずにボディ データからモデル バインディングを追加する方法があることを知りたいと思っていApiControllerAttributeます。

私がこの質問をする理由は、私たちが asp net 5 から net core 5 に移行し、どのコンテンツ タイプ リクエストが来るかに依存せずにモデル パラメータをバインドしたいからです: withcontent-type: x-www-form-urlencodedまたは withcontent-type application/json charset=utf-8

私はこの問題について多くのことを読みましたが、この記事[FromBody]で説明されているように、属性を使用してコンテンツタイプごとにメソッドを分離するという決定しか見つけられませんでした。

0 投票する
1 に答える
45 参照

asp.net-core - HttpWebRequest を使用して呼び出すと、ASP.NET Core 2.1 API POST 本体が null になり、JSON として解析できないようです

特定のケースで .NET Core 2.1 API が JSON 本体を無視しているように見える奇妙なバグに直面しています。

  • 他にも多くの質問にアドバイスしましたが (たとえば、これ自体が他のものを参照しています)、問題を解決できませんでした。

次の API メソッドのようなものがあります。

関連する構成は次のとおりです。

TestJsonConverterなぜ物事が期待どおりに機能しないのかをテストするために作成した単純なコンバーターはどこにありますか。それは簡単です。

CanConvertPostman を使用した api メソッドの呼び出しは機能します。つまり、JSON コンバーターの、CanRead、を通過し、解析された jsonを含むReadJsonにルーティングされます。SendInvoicebody

ただし、 HttpWebRequestを使用して api メソッドを呼び出すと(問題がある場合は .NET Framework 4 から)のみが通過しCanConvert、 nullにルーティングさSendInvoiceれます。body

リクエストの本文は、次のような単純な json です。

本文を直接読み取ると、両方のケースで期待値が得られます。

2 種類のリクエストに意味のある違いは見当たりません。左側は Postman のリクエスト、右側は HttpWebRequest です。

ここに画像の説明を入力

確かに、Content-Typeヘッダーは に設定されていapplication/jsonます。また、FWIW、HttpWebRequest本体は次のように設定されています。

そして、次のように呼び出します。

質問

bodyで使用すると null になるのはなぜHttpWebRequestですか? このような場合、JSON コンバーターの読み取りメソッドがスキップされるのはなぜですか?