Skip to content

[dotnet-watch] Ctrl+C does not work on Android (likely mobile)Β #53634

@jonathanpeppers

Description

@jonathanpeppers

Describe the bug

Pressing Ctrl+C on Windows:

Stopping application...
dotnet watch πŸ›‘ Shutdown requested. Press Ctrl+C again to force exit.

Stopping application...
dotnet watch ❌ [testabc (net11.0-android)] Failed to read response: System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake.
   at System.Net.WebSockets.ManagedWebSocket.ThrowEOFUnexpected()
   at System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(Int32 minimumRequiredBytes, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TResult](Memory`1 payloadBuffer, CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
   at System.Threading.Tasks.ValueTask`1.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)
--- End of stack trace from previous location ---
   at Microsoft.DotNet.HotReload.WebSocketClientTransport.RequestHandler.ReadAsync(CancellationToken cancellationToken)
   at Microsoft.DotNet.HotReload.DefaultHotReloadClient.ListenForResponsesAsync(CancellationToken cancellationToken)
dotnet watch ⌚ [testabc (net11.0-android)] Exited
dotnet watch ❌ An unexpected error occurred: System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
   at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
   at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ContextDisposed()
   at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.Fetch[TFeature](TFeature& cached, Func`2 factory)
   at Microsoft.AspNetCore.Http.DefaultHttpContext.Abort()
   at Microsoft.AspNetCore.WebSockets.AbortStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at System.Net.WebSockets.ManagedWebSocket.DisposeCore()
   at System.Net.WebSockets.ManagedWebSocket.Dispose()
   at Microsoft.DotNet.HotReload.WebSocketClientTransport.RequestHandler.Dispose()
   at Microsoft.DotNet.HotReload.WebSocketClientTransport.Dispose()
   at Microsoft.DotNet.HotReload.HotReloadClients.Dispose()
   at Microsoft.DotNet.Watch.RunningProject.DisposeAsync(Boolean isExiting)
   at Microsoft.DotNet.Watch.CompilationHandler.<>c__DisplayClass17_0.<<TrackRunningProjectAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.DotNet.Watch.ProcessRunner.RunAsync(ProcessSpec processSpec, ILogger logger, ProcessLaunchResult launchResult, CancellationToken processTerminationToken)
   at Microsoft.DotNet.Watch.HotReloadDotNetWatcher.WatchAsync(CancellationToken shutdownCancellationToken)
   at Microsoft.DotNet.Watch.Program.RunAsync()

To Reproduce

  • dotnet new android
  • dotnet watch
  • Ctrl+C

Exceptions (if any)

See above.

Further technical details

> dotnet --version
11.0.100-preview.3.26179.102

Metadata

Metadata

Labels

Area-Watchdotnet-watchuntriagedRequest triage from a team member

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions