Skip to content

Dashboard client does not respond to ping causing browser refresh during debugging #13530

@andrew-vdb

Description

@andrew-vdb

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

When I debugging fetch api call to my minimal api, Aspire DashboardClient does not get response (because I'm debugging...) and refresh my browser

There is another issue where my minimal api return 200 but browser still has pending request, not sure if this related or not... but please fix that DashboardClient behavior..

Expected Behavior

I'm not sure what the expectation here, so what if DashboardClient does not get response, just log error or something

Steps To Reproduce

Run aspnet core api with aspire
Put debugger somewhere
Hold debugging for 5 minutes or 10 minutes
You will see that exception in vs output
say you are debugging with filling form, browser get refreshed

Exceptions (if any)

Aspire.Hosting.Dashboard.ServiceClient.DashboardClient: Error: Error #1 watching resources.
Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Error reading next message. HttpProtocolException: The HTTP/2 server didn't respond to a ping request within the configured KeepAlivePingDelay. (HttpProtocolError)", DebugException="System.Net.Http.HttpProtocolException: The HTTP/2 server didn't respond to a ping request within the configured KeepAlivePingDelay. (HttpProtocolError)")
 ---> System.Net.Http.HttpProtocolException: The HTTP/2 server didn't respond to a ping request within the configured KeepAlivePingDelay. (HttpProtocolError)
   at System.Net.Http.Http2Connection.ThrowRequestAborted(Exception innerException)
   at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()
   at System.Net.Http.Http2Connection.Http2Stream.TryReadFromBuffer(Span`1 buffer, Boolean partOfSyncRead)
   at System.Net.Http.Http2Connection.Http2Stream.ReadDataAsync(Memory`1 buffer, HttpResponseMessage responseMessage, CancellationToken cancellationToken)
   at Grpc.Net.Client.Internal.StreamExtensions.ReadMessageAsync[TResponse](Stream responseStream, GrpcCall call, Func`2 deserializer, String grpcEncoding, Boolean singleMessage, CancellationToken cancellationToken)
   at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Grpc.Net.Client.Internal.GrpcCall`2.ReadMessageAsync(Stream responseStream, String grpcEncoding, Boolean singleMessage, CancellationToken cancellationToken)
   at Grpc.Net.Client.Internal.HttpContentClientStreamReader`2.MoveNextCore(CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at Grpc.Net.Client.Internal.HttpContentClientStreamReader`2.MoveNextCore(CancellationToken cancellationToken)
   at Grpc.Net.Client.Internal.Retry.RetryCallBaseClientStreamReader`2.MoveNext(CancellationToken cancellationToken)
   at Grpc.Core.AsyncStreamReaderExtensions.ReadAllAsyncCore[T](IAsyncStreamReader`1 streamReader, CancellationToken cancellationToken)+MoveNext()
   at Grpc.Core.AsyncStreamReaderExtensions.ReadAllAsyncCore[T](IAsyncStreamReader`1 streamReader, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
   at Aspire.Dashboard.ServiceClient.DashboardClient.WatchResourcesAsync(RetryContext retryContext, CancellationToken cancellationToken) in /_/src/Aspire.Dashboard/ServiceClient/DashboardClient.cs:line 350
   at Aspire.Dashboard.ServiceClient.DashboardClient.WatchResourcesAsync(RetryContext retryContext, CancellationToken cancellationToken) in /_/src/Aspire.Dashboard/ServiceClient/DashboardClient.cs:line 350
   at Aspire.Dashboard.ServiceClient.DashboardClient.WatchWithRecoveryAsync(Func`3 action, CancellationToken cancellationToken) in /_/src/Aspire.Dashboard/ServiceClient/DashboardClient.cs:line 321
The thread 2008 has exited with code 0 (0x0).

.NET Version info

.net 10, Aspire 13.2

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions