Closed
Description
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
- Install .NET Core SDK v3.1.101
- Run
dotnet new react
- Open the
.csproj
file using Visual Studio Enterprise 2019 v16.4.3 - Start debugging by pressing F5
- Once your browser launches, refresh the page repeatedly
- Check Visual Studio. You should see glorious exception spew:
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