asp net core web apiコントローラアクションメソッドにファイルをアップロードします。 content-typeを "application/octet-stream"として送信しています。 StreamInputFormatterというカスタム入力フォーマッタを作成しました。 streaminputFormatterが呼び出されていますが、コントローラのアクションメソッドが呼び出されていませんか?とIamのエラーが発生するasp.netコアwebapiコントローラアクションメソッドのストリームタイプパラメータでモデルバインディングが動作しません。(カスタムストリームインプットフォーマッタでも)
"InvalidOperationException:タイムアウトがこのストリームでサポートされていません。
StreamInputFormatter:
public class StreamInputFormatter : IInputFormatter
{
public bool CanRead(InputFormatterContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
var contentType = context.HttpContext.Request.ContentType;
if (contentType == "application/octet-stream")
{
return true;
}
return false;
}
public Task<InputFormatterResult> ReadAsync(InputFormatterContext context)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
var memoryStream = new MemoryStream();
context.HttpContext.Request.Body.CopyTo(memoryStream);
return InputFormatterResult.SuccessAsync(memoryStream);
}
}
コントローラのアクション・メソッド:
[HttpPost("{documentType}")]
public async Task<IActionResult> CreateJob(string documentType, [FromBody]Stream template)
{
}
StreamInputFormatterはどこで使用しましたか? Startup.csのミドルウェアの場合は?コードを共有できますか? – Mehmet
バイト配列で試しましたか? [FromBody] byte []テンプレート – Klinger