次のアクションを持つ MVC API コントローラーがあります。
メッセージの実際のデータ/本文の読み方がわかりませんか?
[HttpPost]
public void Confirmation(HttpRequestMessage request)
{
var content = request.Content;
}
次のアクションを持つ MVC API コントローラーがあります。
メッセージの実際のデータ/本文の読み方がわかりませんか?
[HttpPost]
public void Confirmation(HttpRequestMessage request)
{
var content = request.Content;
}
using System.IO;
string requestFromPost;
using( StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream) )
{
reader.BaseStream.Position = 0;
requestFromPost = reader.ReadToEnd();
}
このようにしないことをお勧めします。アクション メソッドは、簡単に単体テストできるように設計する必要があります。この場合、リクエストから直接データにアクセスしないでください。このようにすると、このコードを単体テストするときにHttpRequestMessage
.
MVC にすべてのモデル バインディングを行わせるには、次のようにする必要があります。
[HttpPost]
public void Confirmation(YOURDTO yourobj)//assume that you define YOURDTO elsewhere
{
//your logic to process input parameters.
}
リクエストにアクセスしたい場合。コントローラーの Request プロパティにアクセスするだけです (パラメーターを介してではありません)。このような:
[HttpPost]
public void Confirmation()
{
var content = Request.Content.ReadAsStringAsync().Result;
}
MVC では、Request プロパティは実際には .NET HttpRequest のラッパーであり、基本クラスから継承されます。単体テストが必要な場合は、このオブジェクトをモックすることもできます。