Skip to content

Commit 1f27750

Browse files
fix for #173
1 parent 7493846 commit 1f27750

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
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 = 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: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ public async Task ProcessBatchAsync_CallsRegisterForDispose()
102102
{
103103
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, "http://example.com/")),
104104
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "http://example.org/"))
105-
}
105+
},
106+
RequestUri = new Uri("http://example.com/")
106107
};
107108

108109
var response = await batchHandler.ProcessBatchAsync(batchRequest, CancellationToken.None);
@@ -269,7 +270,8 @@ public async Task ParseBatchRequestsAsync_Returns_RequestsFromMultipartContent()
269270
{
270271
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, "http://example.com/")),
271272
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "http://example.com/values"))
272-
}
273+
},
274+
RequestUri = new Uri("http://example.com/")
273275
};
274276

275277
IList<HttpRequestMessage> requests = await batchHandler.ParseBatchRequestsAsync(request, CancellationToken.None);
@@ -281,6 +283,29 @@ public async Task ParseBatchRequestsAsync_Returns_RequestsFromMultipartContent()
281283
Assert.Equal("http://example.com/values", requests[1].RequestUri.AbsoluteUri);
282284
}
283285

286+
[Fact]
287+
public async Task ParseBatchRequestsAsync_Returns_RequestsFromMultipartContent_WithUriSchemeSet_FromRequest()
288+
{
289+
DefaultHttpBatchHandler batchHandler = new DefaultHttpBatchHandler(new HttpServer());
290+
HttpRequestMessage request = new HttpRequestMessage
291+
{
292+
Content = new MultipartContent("mixed")
293+
{
294+
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, "http://example.com/")),
295+
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "https://example.com/values"))
296+
},
297+
RequestUri = new Uri("https://example.com/")
298+
};
299+
300+
IList<HttpRequestMessage> requests = await batchHandler.ParseBatchRequestsAsync(request, CancellationToken.None);
301+
302+
Assert.Equal(2, requests.Count);
303+
Assert.Equal(HttpMethod.Get, requests[0].Method);
304+
Assert.Equal("https://example.com/", requests[0].RequestUri.AbsoluteUri);
305+
Assert.Equal(HttpMethod.Post, requests[1].Method);
306+
Assert.Equal("https://example.com/values", requests[1].RequestUri.AbsoluteUri);
307+
}
308+
284309
[Fact]
285310
public async Task ParseBatchRequestsAsync_CopiesPropertiesFromRequest_WithoutExcludedProperties()
286311
{
@@ -291,7 +316,8 @@ public async Task ParseBatchRequestsAsync_CopiesPropertiesFromRequest_WithoutExc
291316
{
292317
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, "http://example.com/")),
293318
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "http://example.com/values"))
294-
}
319+
},
320+
RequestUri = new Uri("http://example.com/")
295321
};
296322
request.Properties.Add("foo", "bar");
297323
request.SetRouteData(new HttpRouteData(new HttpRoute()));

test/System.Web.Http.WebHost.Test/BatchingTest.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public async Task WebHost_Batching_WithSpecialCharactersInUrl()
4343
Content = new MultipartContent("mixed")
4444
{
4545
new HttpMessageContent(new HttpRequestMessage(HttpMethod.Post, "http://contoso.com/values/ space"))
46-
}
46+
},
47+
RequestUri = new Uri("http://contoso.com/")
4748
};
4849

4950
// Arrange

0 commit comments

Comments
 (0)