From 4e0f0c79ec62561650ef7f7cd341a136f803b7d3 Mon Sep 17 00:00:00 2001 From: Chris R Date: Tue, 8 Sep 2015 12:04:53 -0700 Subject: [PATCH] #366 Rewind the request buffer after parsing the form. --- src/Microsoft.AspNet.Http/Features/FormFeature.cs | 3 +++ test/Microsoft.AspNet.Http.Tests/FormFeatureTests.cs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/Microsoft.AspNet.Http/Features/FormFeature.cs b/src/Microsoft.AspNet.Http/Features/FormFeature.cs index b50d58c415..48819224dd 100644 --- a/src/Microsoft.AspNet.Http/Features/FormFeature.cs +++ b/src/Microsoft.AspNet.Http/Features/FormFeature.cs @@ -152,6 +152,9 @@ namespace Microsoft.AspNet.Http.Features.Internal } } + // Rewind so later readers don't have to. + _request.Body.Seek(0, SeekOrigin.Begin); + Form = new FormCollection(formFields, files); return Form; } diff --git a/test/Microsoft.AspNet.Http.Tests/FormFeatureTests.cs b/test/Microsoft.AspNet.Http.Tests/FormFeatureTests.cs index 6f3eb26111..4580ac9e97 100644 --- a/test/Microsoft.AspNet.Http.Tests/FormFeatureTests.cs +++ b/test/Microsoft.AspNet.Http.Tests/FormFeatureTests.cs @@ -32,6 +32,8 @@ namespace Microsoft.AspNet.Http.Features.Internal // Assert Assert.Equal("bar", formCollection["foo"]); Assert.Equal("2", formCollection["baz"]); + Assert.Equal(0, context.Request.Body.Position); + Assert.True(context.Request.Body.CanSeek); // Cached formFeature = context.Features.Get();