0

content-type ヘッダーなしで json 形式のリクエストを受け入れる Web サービスを設定することは可能ですか?

Content-type: application/json ヘッダーを渡すと、POST 動詞がうまく機能します。これを行わないと、400 エラーがスローされます。ここで、400 を返す理由を尋ねる多くの質問をしてきましたが、その答えは content-type です。サーバー側でユーザーに代わって「入力」することは可能ですか?

4

2 に答える 2

0

Are you using WebAPI or ASP.NET MVC? I have a solutions for you, although some might scream at me.

  • You could create an attribute that tries to deserialize the request's body into the object you are looking for for that particular action. If it works, then you can pass that in to the parameter list using the RequestContext. Not sure off the top of my head what the exact properties are you'll need to set, but I remember doing something very similar in ASP.NET MVC.

Hope that helps.

P.S. Use JSON.Net, it has a lot of helpful deserialization methods that will make this a breeze.

于 2013-01-16T02:11:12.717 に答える
0

デフォルトの .NET Webstack では、リクエストの解釈方法を伝える何らかのコンテンツ ヘッダーがなければ、これを行うことはできません。ASP.NET スタックの内部にアクセスしたい場合 (ILSpy などのリフレクター アプリを使用できます)、インターセプト ポイントを見つけることができますが、モジュールを取得するためにカスタム IIS 統合を行う必要がある可能性が高くなります。おそらく ASP.NET スタックが関与する前であっても、要求をインターセプトします。

ほとんどの人にとって、JSON 要求アプリケーションにヘッダーを導入させる方がはるかに簡単です。

さらに、Reflector を使用してこれらのスタックがどのように機能するかを調べる方法を学習し始めることをお勧めします。これらのスタックは実際には複雑で大きく、非常に拡張可能であり、エンジニアリングのコストがかかります (経験の浅い IIS 開発者は約 50 時間かかると今は推測しています)。きちんと行うことができる場合は、この手法を設計する必要があります)。

于 2013-01-16T01:48:16.463 に答える