From 6c65f9be302277cd08c4ddd8d8cec45bb9fe5401 Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Thu, 10 Sep 2020 12:53:12 +0300 Subject: [PATCH 1/6] Mark some System.Net.HttpListener APIs as unsupported on browser --- .../ref/System.Net.HttpListener.cs | 12 ++++++++++++ .../src/System/Net/HttpListener.cs | 2 ++ .../src/System/Net/HttpListenerRequest.cs | 3 +++ .../Net/Managed/HttpListenerRequest.Managed.cs | 3 +++ .../Net/Managed/HttpListenerResponse.Managed.cs | 4 ++++ .../Managed/HttpListenerTimeoutManager.Managed.cs | 4 ++++ 6 files changed, 28 insertions(+) diff --git a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs index 10e2e36f3cce0..b9dd5d3757643 100644 --- a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs +++ b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs @@ -13,6 +13,7 @@ public HttpListener() { } public System.Net.AuthenticationSchemes AuthenticationSchemes { get { throw null; } set { } } public System.Net.AuthenticationSchemeSelector? AuthenticationSchemeSelectorDelegate { get { throw null; } set { } } public System.Security.Authentication.ExtendedProtection.ServiceNameCollection DefaultServiceNames { get { throw null; } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy ExtendedProtectionPolicy { get { throw null; } set { } } [System.Diagnostics.CodeAnalysis.DisallowNullAttribute] public System.Net.HttpListener.ExtendedProtectionSelector? ExtendedProtectionSelectorDelegate { get { throw null; } set { } } @@ -87,14 +88,17 @@ internal HttpListenerRequest() { } public string HttpMethod { get { throw null; } } public System.IO.Stream InputStream { get { throw null; } } public bool IsAuthenticated { get { throw null; } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public bool IsLocal { get { throw null; } } public bool IsSecureConnection { get { throw null; } } public bool IsWebSocketRequest { get { throw null; } } public bool KeepAlive { get { throw null; } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.Net.IPEndPoint LocalEndPoint { get { throw null; } } public System.Version ProtocolVersion { get { throw null; } } public System.Collections.Specialized.NameValueCollection QueryString { get { throw null; } } public string? RawUrl { get { throw null; } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.Net.IPEndPoint RemoteEndPoint { get { throw null; } } public System.Guid RequestTraceIdentifier { get { throw null; } } public string? ServiceName { get { throw null; } } @@ -102,6 +106,7 @@ internal HttpListenerRequest() { } public System.Uri? Url { get { throw null; } } public System.Uri? UrlReferrer { get { throw null; } } public string UserAgent { get { throw null; } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public string UserHostAddress { get { throw null; } } public string UserHostName { get { throw null; } } public string[]? UserLanguages { get { throw null; } } @@ -125,11 +130,14 @@ internal HttpListenerResponse() { } public bool SendChunked { get { throw null; } set { } } public int StatusCode { get { throw null; } set { } } public string StatusDescription { get { throw null; } set { } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public void Abort() { } public void AddHeader(string name, string value) { } public void AppendCookie(System.Net.Cookie cookie) { } public void AppendHeader(string name, string value) { } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public void Close() { } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public void Close(byte[] responseEntity, bool willBlock) { } public void CopyFrom(System.Net.HttpListenerResponse templateResponse) { } public void Redirect(string url) { } @@ -140,10 +148,14 @@ public partial class HttpListenerTimeoutManager { internal HttpListenerTimeoutManager() { } public System.TimeSpan DrainEntityBody { get { throw null; } set { } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan EntityBody { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan HeaderWait { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } public System.TimeSpan IdleConnection { get { throw null; } set { } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public long MinSendBytesPerSecond { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan RequestQueue { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } } } diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs index b391474791591..f12415a3b51a3 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Diagnostics.CodeAnalysis; +using System.Runtime.Versioning; using System.Security.Authentication.ExtendedProtection; using System.Text; using System.Threading.Tasks; @@ -78,6 +79,7 @@ public AuthenticationSchemes AuthenticationSchemes } } + [UnsupportedOSPlatform("browser")] public ExtendedProtectionPolicy ExtendedProtectionPolicy { get => _extendedProtectionPolicy; diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerRequest.cs b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerRequest.cs index 2cd1587bd8adb..782192c7ee7e8 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerRequest.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerRequest.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.Net.WebSockets; using System.Reflection; +using System.Runtime.Versioning; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; @@ -110,6 +111,7 @@ public Encoding ContentEncoding public string? ContentType => Headers[HttpKnownHeaderNames.ContentType]; + [UnsupportedOSPlatform("browser")] public bool IsLocal => LocalEndPoint!.Address.Equals(RemoteEndPoint!.Address); public bool IsWebSocketRequest @@ -206,6 +208,7 @@ public NameValueCollection QueryString public string UserAgent => Headers[HttpKnownHeaderNames.UserAgent]!; + [UnsupportedOSPlatform("browser")] public string UserHostAddress => LocalEndPoint!.ToString(); public string UserHostName => Headers[HttpKnownHeaderNames.Host]!; diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs index d18b621d0f505..00569f57136be 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs @@ -34,6 +34,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; +using System.Runtime.Versioning; using System.Security.Authentication.ExtendedProtection; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -373,8 +374,10 @@ public Stream InputStream public bool IsSecureConnection => _context.Connection.IsSecure; + [UnsupportedOSPlatform("browser")] public IPEndPoint? LocalEndPoint => _context.Connection.LocalEndPoint; + [UnsupportedOSPlatform("browser")] public IPEndPoint? RemoteEndPoint => _context.Connection.RemoteEndPoint; public Guid RequestTraceIdentifier { get; } = Guid.NewGuid(); diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs index 504c2ca9c9b7e..5f328cc53435d 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs @@ -30,6 +30,7 @@ using System.Globalization; using System.IO; +using System.Runtime.Versioning; using System.Text; namespace System.Net @@ -92,6 +93,7 @@ public int StatusCode private void Dispose() => Close(true); + [UnsupportedOSPlatform("browser")] public void Close() { if (Disposed) @@ -100,6 +102,7 @@ public void Close() Close(false); } + [UnsupportedOSPlatform("browser")] public void Abort() { if (Disposed) @@ -114,6 +117,7 @@ private void Close(bool force) _httpContext!.Connection.Close(force); } + [UnsupportedOSPlatform("browser")] public void Close(byte[] responseEntity, bool willBlock) { CheckDisposed(); diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs index 8dda744104079..86344bd547120 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs @@ -36,6 +36,7 @@ public TimeSpan IdleConnection } } + [UnsupportedOSPlatform("browser")] public TimeSpan EntityBody { get => TimeSpan.Zero; @@ -47,6 +48,7 @@ public TimeSpan EntityBody } } + [UnsupportedOSPlatform("browser")] public TimeSpan HeaderWait { get => TimeSpan.Zero; @@ -58,6 +60,7 @@ public TimeSpan HeaderWait } } + [UnsupportedOSPlatform("browser")] public long MinSendBytesPerSecond { get => 0; @@ -72,6 +75,7 @@ public long MinSendBytesPerSecond } } + [UnsupportedOSPlatform("browser")] public TimeSpan RequestQueue { get => TimeSpan.Zero; From 0677eb1256d3aaf1f2624404b44e562a70ca180b Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Thu, 10 Sep 2020 14:02:38 +0300 Subject: [PATCH 2/6] FIx windows builds --- .../src/System/Net/Windows/HttpListenerRequest.Windows.cs | 3 +++ .../src/System/Net/Windows/HttpListenerResponse.Windows.cs | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs index 5000795ba543c..2ed2812c00709 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs @@ -7,6 +7,7 @@ using System.IO; using System.Net.WebSockets; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Security; using System.Security.Authentication.ExtendedProtection; using System.Security.Cryptography; @@ -288,6 +289,7 @@ public bool HasEntityBody } } + [UnsupportedOSPlatform("browser")] public IPEndPoint RemoteEndPoint { get @@ -301,6 +303,7 @@ public IPEndPoint RemoteEndPoint } } + [UnsupportedOSPlatform("browser")] public IPEndPoint LocalEndPoint { get diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs index 0c4b36af8efc7..40d72e8af468b 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs @@ -8,6 +8,7 @@ using System.Text; using System.ComponentModel; using System.Diagnostics; +using System.Runtime.Versioning; using Microsoft.Win32.SafeHandles; namespace System.Net @@ -95,6 +96,7 @@ public Version ProtocolVersion } } + [UnsupportedOSPlatform("browser")] public void Abort() { if (Disposed) @@ -106,6 +108,7 @@ public void Abort() HttpListenerContext.Abort(); } + [UnsupportedOSPlatform("browser")] public void Close() { try @@ -118,6 +121,7 @@ public void Close() } } + [UnsupportedOSPlatform("browser")] public void Close(byte[] responseEntity, bool willBlock) { CheckDisposed(); From a8dc93c21f10dfdb15b86e08e32c7a1e118505e5 Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Thu, 10 Sep 2020 14:50:44 +0300 Subject: [PATCH 3/6] Fix windows builds --- .../System/Net/Windows/HttpListenerTimeoutManager.Windows.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs index a1af5b35b71a8..ef68f9afc98a2 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs @@ -77,6 +77,7 @@ private void SetTimespanTimeout(Interop.HttpApi.HTTP_TIMEOUT_TYPE type, TimeSpan // request, it resets the timer to give the connection another interval. // // Use TimeSpan.Zero to indiate that system defaults should be used. + [UnsupportedOSPlatform("browser")] public TimeSpan EntityBody { get @@ -115,6 +116,7 @@ public TimeSpan DrainEntityBody // it up. The default timer is 2 minutes. // // Use TimeSpan.Zero to indiate that system defaults should be used. + [UnsupportedOSPlatform("browser")] public TimeSpan RequestQueue { get @@ -151,6 +153,7 @@ public TimeSpan IdleConnection // This timeout is only enforced after the first request on the connection is routed to the application. // // Use TimeSpan.Zero to indiate that system defaults should be used. + [UnsupportedOSPlatform("browser")] public TimeSpan HeaderWait { get @@ -168,6 +171,7 @@ public TimeSpan HeaderWait // bytes-per-second. // // To disable this timer set it to UInt32.MaxValue + [UnsupportedOSPlatform("browser")] public long MinSendBytesPerSecond { get From 75e9fb43192f60e1a289e18770e517d297621aa8 Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Fri, 11 Sep 2020 09:34:38 +0300 Subject: [PATCH 4/6] Remove browser annotations from the properties with windows-specific setters. --- .../System.Net.HttpListener/ref/System.Net.HttpListener.cs | 4 ---- .../System/Net/Managed/HttpListenerTimeoutManager.Managed.cs | 3 --- .../System/Net/Windows/HttpListenerTimeoutManager.Windows.cs | 4 ---- 3 files changed, 11 deletions(-) diff --git a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs index b9dd5d3757643..526706cab315e 100644 --- a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs +++ b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs @@ -148,14 +148,10 @@ public partial class HttpListenerTimeoutManager { internal HttpListenerTimeoutManager() { } public System.TimeSpan DrainEntityBody { get { throw null; } set { } } - [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan EntityBody { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } - [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan HeaderWait { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } public System.TimeSpan IdleConnection { get { throw null; } set { } } - [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public long MinSendBytesPerSecond { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } - [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] public System.TimeSpan RequestQueue { get { throw null; } [System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] set { } } } } diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs index 86344bd547120..61784fd7526b0 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs @@ -36,7 +36,6 @@ public TimeSpan IdleConnection } } - [UnsupportedOSPlatform("browser")] public TimeSpan EntityBody { get => TimeSpan.Zero; @@ -48,7 +47,6 @@ public TimeSpan EntityBody } } - [UnsupportedOSPlatform("browser")] public TimeSpan HeaderWait { get => TimeSpan.Zero; @@ -60,7 +58,6 @@ public TimeSpan HeaderWait } } - [UnsupportedOSPlatform("browser")] public long MinSendBytesPerSecond { get => 0; diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs index ef68f9afc98a2..a1af5b35b71a8 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerTimeoutManager.Windows.cs @@ -77,7 +77,6 @@ private void SetTimespanTimeout(Interop.HttpApi.HTTP_TIMEOUT_TYPE type, TimeSpan // request, it resets the timer to give the connection another interval. // // Use TimeSpan.Zero to indiate that system defaults should be used. - [UnsupportedOSPlatform("browser")] public TimeSpan EntityBody { get @@ -116,7 +115,6 @@ public TimeSpan DrainEntityBody // it up. The default timer is 2 minutes. // // Use TimeSpan.Zero to indiate that system defaults should be used. - [UnsupportedOSPlatform("browser")] public TimeSpan RequestQueue { get @@ -153,7 +151,6 @@ public TimeSpan IdleConnection // This timeout is only enforced after the first request on the connection is routed to the application. // // Use TimeSpan.Zero to indiate that system defaults should be used. - [UnsupportedOSPlatform("browser")] public TimeSpan HeaderWait { get @@ -171,7 +168,6 @@ public TimeSpan HeaderWait // bytes-per-second. // // To disable this timer set it to UInt32.MaxValue - [UnsupportedOSPlatform("browser")] public long MinSendBytesPerSecond { get From bb7d5a1c5051625bf5a521124260d95e15301159 Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Fri, 11 Sep 2020 09:41:39 +0300 Subject: [PATCH 5/6] Mark only setter of ExtendedProtectionPolicy --- .../System.Net.HttpListener/ref/System.Net.HttpListener.cs | 3 +-- .../System.Net.HttpListener/src/System/Net/HttpListener.cs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs index 526706cab315e..23d851ad6323c 100644 --- a/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs +++ b/src/libraries/System.Net.HttpListener/ref/System.Net.HttpListener.cs @@ -13,8 +13,7 @@ public HttpListener() { } public System.Net.AuthenticationSchemes AuthenticationSchemes { get { throw null; } set { } } public System.Net.AuthenticationSchemeSelector? AuthenticationSchemeSelectorDelegate { get { throw null; } set { } } public System.Security.Authentication.ExtendedProtection.ServiceNameCollection DefaultServiceNames { get { throw null; } } - [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] - public System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy ExtendedProtectionPolicy { get { throw null; } set { } } + public System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy ExtendedProtectionPolicy { get { throw null; } [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] set { } } [System.Diagnostics.CodeAnalysis.DisallowNullAttribute] public System.Net.HttpListener.ExtendedProtectionSelector? ExtendedProtectionSelectorDelegate { get { throw null; } set { } } public bool IgnoreWriteExceptions { get { throw null; } set { } } diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs index f12415a3b51a3..d40826ba07710 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListener.cs @@ -79,10 +79,10 @@ public AuthenticationSchemes AuthenticationSchemes } } - [UnsupportedOSPlatform("browser")] public ExtendedProtectionPolicy ExtendedProtectionPolicy { get => _extendedProtectionPolicy; + [UnsupportedOSPlatform("browser")] set { CheckDisposed(); From 3c8d6d391b8868f3edfb5e7f8e4bd8cf50bf1eca Mon Sep 17 00:00:00 2001 From: Maxim Lipnin Date: Fri, 11 Sep 2020 10:16:41 +0300 Subject: [PATCH 6/6] Remove another redundant annotation --- .../src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs index 61784fd7526b0..8dda744104079 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerTimeoutManager.Managed.cs @@ -72,7 +72,6 @@ public long MinSendBytesPerSecond } } - [UnsupportedOSPlatform("browser")] public TimeSpan RequestQueue { get => TimeSpan.Zero;