diff --git a/src/Microsoft.AspNet.Abstractions/HttpResponse.cs b/src/Microsoft.AspNet.Abstractions/HttpResponse.cs index bed5e5c8f2..28814c747b 100644 --- a/src/Microsoft.AspNet.Abstractions/HttpResponse.cs +++ b/src/Microsoft.AspNet.Abstractions/HttpResponse.cs @@ -23,7 +23,12 @@ namespace Microsoft.AspNet.Abstractions public abstract void OnSendingHeaders(Action callback, object state); - public abstract void Redirect(string location); + public virtual void Redirect(string location) + { + Redirect(location, permanent: false); + } + + public abstract void Redirect(string location, bool permanent); public abstract Task WriteAsync(string data); diff --git a/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs b/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs index 278f16b591..2a24076c19 100644 --- a/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs +++ b/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs @@ -107,9 +107,17 @@ namespace Microsoft.AspNet.PipelineCore HttpResponseInformation.OnSendingHeaders(callback, state); } - public override void Redirect(string location) + public override void Redirect(string location, bool permanent) { - HttpResponseInformation.StatusCode = 302; + if (permanent) + { + HttpResponseInformation.StatusCode = 301; + } + else + { + HttpResponseInformation.StatusCode = 302; + } + Headers.Set(Constants.Headers.Location, location); }