を経由してフォームデータを返しません。ASP.Net WEBAPIそれはバグだ場合、私は知らないが、私は、サーバー側の生の要求を取得することができませんよコンテンツ
は、コントローラのメソッドを次の点を考慮
[AllowAnonymous]
[Route("api/sayHello")]
[HttpPost]
public string SayHello([FromBody] string userName)
{
return $"Hello, {userName}.";
}
私はカールを経由してそれを呼び出す:
curl -X POST 'https://localhost:809/api/sayHello' --insecure -d "=userName"
今、私はいくつかのログを追加しようとしています。私は、次のことを行っているグローバルフィルタを追加:
public async Task LogFilterAction(HttpActionContext context)
{
if (context == null)
throw new ArgumentNullException(nameof(context));
LogFilterAction(context.ActionDescriptor?.ControllerDescriptor?.ControllerType,
context.ActionDescriptor?.ActionName,
context.Request?.RequestUri,
await GetDataAsString(context.Request?.Content),
context.Response?.StatusCode
);
}
private static async Task<string> GetDataAsString(HttpContent content)
{
if (content == null)
return null;
var contentBytes = await content.ReadAsByteArrayAsync();
return Encoding.UTF8.GetString(contentBytes);
}
をしかし、ここで問題です:不明な理由の理由contentBytesは常に空の配列です。私は、しかし、あなたが見ることができるように、ASP.Netが正常に引数を要求している
あるいは
それは実際の長さは9(=userName
文字列のそれの長さ)であるということを参照しますそれは生の方法でそれを返しません。ストリームはposition = 0、contentConsumed = false、それ以外はすべて正常です。しかし、私できないは、コントローラに渡されたデータを読み取ります。
はここに何が悪いのでしょうか?あなたがコンテンツストリームにアクセスするときに、それが既に読み込まれていると、ストリームは、その端部に配置されるように
あなたはそれを理解しましたか? – Evk