Skip to content

SPA proxy to React development server throws #18470

Closed
@loic-sharma

Description

@loic-sharma

Describe the bug

After upgrading to ASP.NET Core 3, the SPA Proxy to the React development server throws lots of exceptions:

System.IO.IOException: Unable to read data from the transport connection:
System.IO.IOException
  HResult=0x80131620
  Message=Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request..
  Source=System.Net.Sockets
  StackTrace:
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) in /_/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 1107

Inner Exception 1:
SocketException: The I/O operation has been aborted because of either a thread exit or an application request.

Call stack:

System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(System.Net.Sockets.SocketError error, System.Threading.CancellationToken cancellationToken) Line 1107	C#
System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(short token) Line 1076	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<int>.ConfiguredValueTaskAwaiter.GetResult() Line 159	C#
System.Net.Http.dll!System.Net.Http.HttpConnection.ReadBufferedAsyncCore(System.Memory<byte> destination) Line 1584	C#
[Resuming Async Method]	
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.ExecutionContextCallback(object s) Line 580	C#
System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 172	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.MoveNext(System.Threading.Thread threadPoolThread) Line 618	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.MoveNext() Line 595	C#
System.Private.CoreLib.dll!System.Threading.ThreadPoolGlobals..cctor.AnonymousMethod__5_0(object state) Line 45	C#
System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.InvokeContinuation(System.Action<object> continuation, object state, bool forceAsync, bool requiresExecutionContextFlow) Line 1051	C#
System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs _) Line 886	C#
System.Net.Sockets.dll!System.Net.Sockets.SocketAsyncEventArgs.HandleCompletionPortCallbackError(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 1296	C#
System.Net.Sockets.dll!System.Net.Sockets.SocketAsyncEventArgs..cctor.AnonymousMethod__177_0(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 1260	C#
System.Private.CoreLib.dll!System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 50	C#
System.Private.CoreLib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pNativeOverlapped) Line 78	C#
[Async Call Stack]	
[Async] System.Net.Http.dll!System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(System.Memory<byte> buffer, System.Threading.CancellationToken cancellationToken) Line 65	C#
[Async] System.Net.WebSockets.dll!System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(int minimumRequiredBytes, System.Threading.CancellationToken cancellationToken, bool throwOnPrematureClosure) Line 1209	C#
[Async] System.Net.WebSockets.dll!System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate<System.Net.WebSockets.ManagedWebSocket.WebSocketReceiveResultGetter, System.Net.WebSockets.WebSocketReceiveResult>(System.Memory<byte> payloadBuffer, System.Threading.CancellationToken cancellationToken, System.Net.WebSockets.ManagedWebSocket.WebSocketReceiveResultGetter resultGetter) Line 651	C#
System.Threading.Tasks.TaskCanceledException: The operation was canceled.
System.Threading.Tasks.TaskCanceledException
  HResult=0x8013153B
  Message=The operation was canceled.
  Source=System.Net.Http
  StackTrace:
   at System.Net.Http.HttpConnection.RawConnectionStream.<ReadAsync>d__6.MoveNext() in /_/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/RawConnectionStream.cs:line 69

Inner Exception 1:
IOException: Unable to read data from the transport connection: The I/O operation has been aborted because of either a thread exit or an application request..

Inner Exception 2:
SocketException: The I/O operation has been aborted because of either a thread exit or an application request.

Call stack:

System.Net.Http.dll!System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(System.Memory<byte> buffer, System.Threading.CancellationToken cancellationToken) Line 69	C#
[Resuming Async Method]	
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.RawConnectionStream.<ReadAsync>d__6>.ExecutionContextCallback(object s) Line 580	C#
System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 172	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.RawConnectionStream.<ReadAsync>d__6>.MoveNext(System.Threading.Thread threadPoolThread) Line 618	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.RawConnectionStream.<ReadAsync>d__6>.MoveNext() Line 595	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask) Line 304	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke() Line 1131	C#
System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining) Line 742	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject) Line 3326	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations() Line 3291	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishStageThree() Line 2176	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishStageTwo() Line 2145	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishSlow(bool userDelegateExecute) Line 2076	C#
System.Private.CoreLib.dll!System.Threading.Tasks.Task.TrySetException(object exceptionObject) Line 3226	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.SetException(System.Exception exception) Line 784	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder<int>.SetException(System.Exception exception) Line 164	C#
System.Net.Http.dll!System.Net.Http.HttpConnection.ReadBufferedAsyncCore(System.Memory<byte> destination) Line 1592	C#
System.Net.Http.dll!System.Net.Http.HttpConnection.ReadBufferedAsyncCore(System.Memory<byte> destination) Line 1592	C#
[Resuming Async Method]	
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.ExecutionContextCallback(object s) Line 580	C#
System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Line 172	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.MoveNext(System.Threading.Thread threadPoolThread) Line 618	C#
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<ReadBufferedAsyncCore>d__93>.MoveNext() Line 595	C#
System.Private.CoreLib.dll!System.Threading.ThreadPoolGlobals..cctor.AnonymousMethod__5_0(object state) Line 45	C#
System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.InvokeContinuation(System.Action<object> continuation, object state, bool forceAsync, bool requiresExecutionContextFlow) Line 1051	C#
System.Net.Sockets.dll!System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.OnCompleted(System.Net.Sockets.SocketAsyncEventArgs _) Line 886	C#
System.Net.Sockets.dll!System.Net.Sockets.SocketAsyncEventArgs.HandleCompletionPortCallbackError(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 1296	C#
System.Net.Sockets.dll!System.Net.Sockets.SocketAsyncEventArgs..cctor.AnonymousMethod__177_0(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 1260	C#
System.Private.CoreLib.dll!System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) Line 50	C#
System.Private.CoreLib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pNativeOverlapped) Line 78	C#
[Async Call Stack]	
[Async] System.Net.WebSockets.dll!System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(int minimumRequiredBytes, System.Threading.CancellationToken cancellationToken, bool throwOnPrematureClosure) Line 1209	C#
[Async] System.Net.WebSockets.dll!System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate<System.Net.WebSockets.ManagedWebSocket.WebSocketReceiveResultGetter, System.Net.WebSockets.WebSocketReceiveResult>(System.Memory<byte> payloadBuffer, System.Threading.CancellationToken cancellationToken, System.Net.WebSockets.ManagedWebSocket.WebSocketReceiveResultGetter resultGetter) Line 651	C#

I cannot reproduce this issue on ASP.NET Core 2.2.

To Reproduce

  1. Install .NET Core SDK v3.1.101
  2. Run dotnet new react
  3. Open the .csproj file using Visual Studio Enterprise 2019 v16.4.3
  4. Start debugging by pressing F5
  5. Once your browser launches, refresh the page repeatedly
  6. Check Visual Studio. You should see glorious exception spew:

image

Further technical details

ASP.NET Core version: 3.1.1
IDE: VS Enterprise 2019 v16.4.3

Output of `dotnet --info`
.NET Core SDK (reflecting any global.json):
 Version:   3.1.101
 Commit:    b377529961

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.101\

Host (useful for support):
  Version: 3.1.1
  Commit:  a1388f194c

.NET Core SDKs installed:
  1.0.0-preview4-004233 [C:\Program Files\dotnet\sdk]
  2.1.100 [C:\Program Files\dotnet\sdk]
  2.1.802 [C:\Program Files\dotnet\sdk]
  2.2.402 [C:\Program Files\dotnet\sdk]
  3.0.102 [C:\Program Files\dotnet\sdk]
  3.1.101 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 3.1.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-mvcIncludes: MVC, Actions and Controllers, Localization, CORS, most templatesquestion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions