diff --git a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
index cae69dd66c..9dd9e01997 100644
--- a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
+++ b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
@@ -250,7 +250,7 @@ namespace Microsoft.AspNetCore.Http
{
protected HttpRequest() { }
public abstract System.IO.Stream Body { get; set; }
- public abstract System.IO.Pipelines.PipeReader BodyReader { get; set; }
+ public virtual System.IO.Pipelines.PipeReader BodyReader { get { throw null; } set { } }
public abstract long? ContentLength { get; set; }
public abstract string ContentType { get; set; }
public abstract Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get; set; }
@@ -274,7 +274,7 @@ namespace Microsoft.AspNetCore.Http
{
protected HttpResponse() { }
public abstract System.IO.Stream Body { get; set; }
- public abstract System.IO.Pipelines.PipeWriter BodyWriter { get; set; }
+ public virtual System.IO.Pipelines.PipeWriter BodyWriter { get { throw null; } set { } }
public abstract long? ContentLength { get; set; }
public abstract string ContentType { get; set; }
public abstract Microsoft.AspNetCore.Http.IResponseCookies Cookies { get; }
@@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Http
public abstract void Redirect(string location, bool permanent);
public virtual void RegisterForDispose(System.IDisposable disposable) { }
public virtual void RegisterForDisposeAsync(System.IAsyncDisposable disposable) { }
- public abstract System.Threading.Tasks.Task StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));
+ public virtual System.Threading.Tasks.Task StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
}
public static partial class HttpResponseWritingExtensions
{
diff --git a/src/Http/Http.Abstractions/src/HttpRequest.cs b/src/Http/Http.Abstractions/src/HttpRequest.cs
index 1163cbf52a..a63438450b 100644
--- a/src/Http/Http.Abstractions/src/HttpRequest.cs
+++ b/src/Http/Http.Abstractions/src/HttpRequest.cs
@@ -1,6 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+using System;
using System.IO;
using System.IO.Pipelines;
using System.Threading;
@@ -106,7 +107,7 @@ namespace Microsoft.AspNetCore.Http
///
/// Gets or sets the request body pipe .
///
- public abstract PipeReader BodyReader { get; set; }
+ public virtual PipeReader BodyReader { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
///
/// Checks the Content-Type header for form types.
diff --git a/src/Http/Http.Abstractions/src/HttpResponse.cs b/src/Http/Http.Abstractions/src/HttpResponse.cs
index f38e953771..d5a144dd7d 100644
--- a/src/Http/Http.Abstractions/src/HttpResponse.cs
+++ b/src/Http/Http.Abstractions/src/HttpResponse.cs
@@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Http
///
/// Gets or sets the response body pipe
///
- public abstract PipeWriter BodyWriter { get; set; }
+ public virtual PipeWriter BodyWriter { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
///
/// Gets or sets the value for the Content-Length response header.
@@ -129,6 +129,6 @@ namespace Microsoft.AspNetCore.Http
///
/// If the isn't set, StartAsync will default to calling HttpResponse.Body.FlushAsync().
///
- public abstract Task StartAsync(CancellationToken cancellationToken = default);
+ public virtual Task StartAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); }
}
}