Skip to content

Commit dcee8e6

Browse files
authored
Merge pull request #176 from JamesSinclairBiomni/master
- fix for #173
2 parents 7493846 + e940ddf commit dcee8e6

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/System.Web.Http/Batch/DefaultHttpBatchHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public virtual async Task<IList<HttpRequestMessage>> ParseBatchRequestsAsync(Htt
187187
foreach (HttpContent httpContent in streamProvider.Contents)
188188
{
189189
cancellationToken.ThrowIfCancellationRequested();
190-
HttpRequestMessage innerRequest = await httpContent.ReadAsHttpRequestMessageAsync();
190+
HttpRequestMessage innerRequest = request.RequestUri == null ? await httpContent.ReadAsHttpRequestMessageAsync() : await httpContent.ReadAsHttpRequestMessageAsync(request.RequestUri.Scheme);
191191
innerRequest.CopyBatchRequestProperties(request);
192192
requests.Add(innerRequest);
193193
}

test/System.Web.Http.Test/Batch/DefaultHttpBatchHandlerTest.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,29 @@ public async Task ParseBatchRequestsAsync_Returns_RequestsFromMultipartContent()
281281
Assert.Equal("http://example.com/values", requests[1].RequestUri.AbsoluteUri);
282282
}
283283

284+
[Fact]
285+
public async Task ParseBatchRequestsAsync_Returns_RequestsFromMultipartContent_WithUriSchemeSet_FromRequest()
286+
{
287+
DefaultHttpBatchHandler batchHandler = new DefaultHttpBatchHandler(new HttpServer());
288+
HttpRequestMessage request = new HttpRequestMessage
289+
{
290+
Content = new MultipartContent("mixed")
291+
{
292+
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, "http://example.com/")),
293+
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "https://example.com/values"))
294+
},
295+
RequestUri = new Uri("https://example.com/")
296+
};
297+
298+
IList<HttpRequestMessage> requests = await batchHandler.ParseBatchRequestsAsync(request, CancellationToken.None);
299+
300+
Assert.Equal(2, requests.Count);
301+
Assert.Equal(HttpMethod.Get, requests[0].Method);
302+
Assert.Equal("https://example.com/", requests[0].RequestUri.AbsoluteUri);
303+
Assert.Equal(HttpMethod.Post, requests[1].Method);
304+
Assert.Equal("https://example.com/values", requests[1].RequestUri.AbsoluteUri);
305+
}
306+
284307
[Fact]
285308
public async Task ParseBatchRequestsAsync_CopiesPropertiesFromRequest_WithoutExcludedProperties()
286309
{

0 commit comments

Comments
 (0)