Commit 2c9c85e
committed
Prevent GET SSE request failure from causing client disposal exception
Example failure caused by this:
Failed ModelContextProtocol.AspNetCore.Tests.MapMcpStatelessTests.Server_ShutsDownQuickly_WhenClientIsConnected [138 ms]
Error Message:
System.Net.Http.HttpRequestException : An error occurred while sending the request.
---- System.InvalidOperationException : Reading is not allowed after reader was completed.
Stack Trace:
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at ModelContextProtocol.Client.McpHttpClient.SendAsync(HttpRequestMessage request, JsonRpcMessage message, CancellationToken cancellationToken) in /_/src/ModelContextProtocol.Core/Client/McpHttpClient.cs:line 22
at ModelContextProtocol.Client.StreamableHttpClientSessionTransport.ReceiveUnsolicitedMessagesAsync() in /_/src/ModelContextProtocol.Core/Client/StreamableHttpClientSessionTransport.cs:line 178
at ModelContextProtocol.Client.StreamableHttpClientSessionTransport.DisposeAsync() in /_/src/ModelContextProtocol.Core/Client/StreamableHttpClientSessionTransport.cs:line 149
at ModelContextProtocol.Client.McpClientImpl.DisposeAsync() in /_/src/ModelContextProtocol.Core/Client/McpClientImpl.cs:line 235
at ModelContextProtocol.AspNetCore.Tests.MapMcpTests.Server_ShutsDownQuickly_WhenClientIsConnected() in /_/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpTests.cs:line 238
at ModelContextProtocol.AspNetCore.Tests.MapMcpTests.Server_ShutsDownQuickly_WhenClientIsConnected() in /_/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpTests.cs:line 238
--- End of stack trace from previous location ---
----- Inner Stack Trace -----
at System.IO.Pipelines.ThrowHelper.ThrowInvalidOperationException_NoReadingAllowed()
at System.IO.Pipelines.Pipe.AdvanceReader(SequencePosition& consumed, SequencePosition& examined)
at System.IO.Pipelines.PipeReaderStream.HandleReadResult(ReadResult result, Span`1 buffer)
at System.IO.Pipelines.PipeReaderStream.HandleReadResult(ReadResult result, Span`1 buffer)
at System.IO.Pipelines.PipeReaderStream.ReadAsyncInternal(Memory`1 buffer, CancellationToken cancellationToken)
at ModelContextProtocol.AspNetCore.Tests.Utils.KestrelInMemoryConnection.DuplexStream.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken) in /_/tests/ModelContextProtocol.AspNetCore.Tests/Utils/KestrelInMemoryConnection.cs:line 81
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)1 parent d1fddf6 commit 2c9c85e
File tree
1 file changed
+17
-6
lines changed- src/ModelContextProtocol.Core/Client
1 file changed
+17
-6
lines changedLines changed: 17 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
179 | | - | |
180 | | - | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
181 | 185 | | |
182 | | - | |
183 | 186 | | |
184 | 187 | | |
185 | 188 | | |
186 | | - | |
187 | | - | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
188 | 199 | | |
189 | 200 | | |
190 | 201 | | |
| |||
0 commit comments