HttpRequestBase
をとしてラップしていHttpRequestMessage
ます。これには、すべてのヘッダーをコピーする必要があります。しかしHttpRequestMessage
、request オブジェクトと Content オブジェクトに適用されるヘッダーが異なるため、httpRequest.Headers.Add
以下の行で InvalidOperationException がスローされることがあります。
public static HttpRequestMessage AsHttpRequestMessage(this HttpRequestBase request) {
Requires.NotNull(request, "request");
var httpRequest = new HttpRequestMessage(new HttpMethod(request.HttpMethod), request.Url);
foreach (string header in request.Headers) {
httpRequest.Headers.Add(header, request.Headers.GetValues(header));
}
if (request.Form != null) {
// Avoid a request message that will try to read the request stream twice for already parsed data.
httpRequest.Content = new FormUrlEncodedContent(request.Form.AsKeyValuePairs());
} else if (request.InputStream != null) {
httpRequest.Content = new StreamContent(request.InputStream);
}
return httpRequest;
}
明らかに、コードで例外をスローするのではなく、各ヘッダーを適切なオブジェクトに適切に適用したいと考えています。どうすればこれを予測できますか? 例外を生成してキャッチするヘッダー以外のヘッダーの適用性をテストするために使用できる方法はありますか?