APIのHMACセキュリティを実装しようとしています。ファイルを投稿しようとするまで、すべてうまく動作します。HttpContent.ReadAsByteArrayAsync()はエラーなしでDelegatingHandler内で失敗します
HMACソリューションはここにあります - https://github.com/gavinharriss/WebAPI.HMAC - GETリクエストとPOSTリクエストを許可するための元のフォークです。
ファイル添付するコード:私はすぐにHttpContent.ReadAsByteArrayAsync()
を呼び出す場合
var requestContent = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(file);
requestContent.Add(fileContent, "file", filename);
は問題はないが、バイト配列が利用可能です。
しかし、HMAC HttpClient
(HMACHttpClient)が実装要求にHMACヘッダを取り付けるためにDelegatingHandler
(HMACDelegatingHandler)。
HMACDelegatingHandlerには、プロパティがヘルパーで使用され、HMAC署名を構築するためのリクエストがHttpRequestMessage
として渡されます。
署名を構築し、次のコードは、helper classから呼び出されます。
private static async Task<byte[]> ComputeHash(HttpContent httpContent)
{
using (var md5 = MD5.Create())
{
byte[] hash = null;
if (httpContent != null)
{
var content = await httpContent.ReadAsByteArrayAsync(); // <-- Fails here
if (content.Length != 0)
{
hash = md5.ComputeHash(content);
}
}
return hash;
}
}
var content = await httpContent.ReadAsByteArrayAsync()
ラインがヒットしたコード、そして何も、ないエラーをステップ実行します。リクエストはうまくいくようですが、すべてがまだ実行されており、HttpClient
リクエストは送信されません。
何が起こっているのですか?