diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs index 3e968f33e2..df74e54a34 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtActionResult.cs @@ -71,7 +71,7 @@ namespace Microsoft.AspNet.Mvc throw new InvalidOperationException(Resources.NoRoutesMatched); } - context.HttpContext.Response.Headers.Add("Location", new string[] { url }); + context.HttpContext.Response.Headers.Set("Location", url); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs index 9020978d00..d1e1989239 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedAtRouteResult.cs @@ -69,7 +69,7 @@ namespace Microsoft.AspNet.Mvc throw new InvalidOperationException(Resources.NoRoutesMatched); } - context.HttpContext.Response.Headers.Add("Location", new string[] { url }); + context.HttpContext.Response.Headers.Set("Location", url); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs index 42f14a53d5..6061f97d9d 100644 --- a/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs +++ b/src/Microsoft.AspNet.Mvc.Core/ActionResults/CreatedResult.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Mvc /// protected override void OnFormatting([NotNull] ActionContext context) { - context.HttpContext.Response.Headers.Add("Location", new string[] { Location }); + context.HttpContext.Response.Headers.Set("Location", Location); } } } \ No newline at end of file diff --git a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs index a6fa5c176b..230744955d 100644 --- a/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs +++ b/test/Microsoft.AspNet.Mvc.Core.Test/ActionResults/CreatedResultTests.cs @@ -45,6 +45,24 @@ namespace Microsoft.AspNet.Mvc Assert.Equal(location, httpContext.Response.Headers["Location"]); } + [Fact] + public async Task CreatedResult_OverwritesLocationHeader() + { + // Arrange + var location = "/test/"; + var httpContext = GetHttpContext(); + var actionContext = GetActionContext(httpContext); + httpContext.Response.Headers.Set("Location", "/different/location/"); + var result = new CreatedResult(location, "testInput"); + + // Act + await result.ExecuteResultAsync(actionContext); + + // Assert + Assert.Equal(201, httpContext.Response.StatusCode); + Assert.Equal(location, httpContext.Response.Headers["Location"]); + } + private static ActionContext GetActionContext(HttpContext httpContext) { var routeData = new RouteData();