Skip to content

Commit 17dbfed

Browse files
Copilotwadepickett
andauthored
Fix misleading skipNegotiation context in Response code 404 troubleshooting section (#36915)
* Initial plan * Restructure Response code 404 section to separate causes by skipNegotiation setting Fixes #30691. The section previously framed all troubleshooting causes under skipNegotiation=true, but sticky-session and connection-ID-timeout scenarios only apply when skipNegotiation=false. Restructured into three clear subsections: general causes, default negotiation flow causes, and skipNegotiation=true causes. Co-authored-by: wadepickett <10985336+wadepickett@users.noreply.github.com> Agent-Logs-Url: https://github.com/dotnet/AspNetCore.Docs/sessions/7cce18e9-cbc6-4b5c-8fe5-a60d9fe3d060 * Fix formatting of sticky-session explanation --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: wadepickett <10985336+wadepickett@users.noreply.github.com> Co-authored-by: Wade Pickett <wpickett@microsoft.com>
1 parent 956ab5c commit 17dbfed

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

aspnetcore/signalr/troubleshoot.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
---
22
title: ASP.NET Core SignalR connection troubleshooting
3+
ai-usage: ai-assisted
34
author: wadepickett
45
description: ASP.NET Core SignalR connection troubleshooting.
56
monikerRange: '>= aspnetcore-2.1'
67
ms.author: wpickett
78
ms.custom: mvc
8-
ms.date: 04/08/2020
9+
ms.date: 03/25/2026
910
uid: signalr/troubleshoot
1011
---
1112
# Troubleshoot connection errors
@@ -14,18 +15,26 @@ This section provides help with errors that can occur when trying to establish a
1415

1516
### Response code 404
1617

17-
When using WebSockets and `skipNegotiation = true`
1818
```log
1919
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
2020
```
2121

22+
**General causes (all configurations):**
23+
24+
* Verify the client is connecting to the correct endpoint. For example, the server is hosted at `http://127.0.0.1:5000/hub/myHub` and the client is trying to connect to `http://127.0.0.1:5000/myHub`.
25+
26+
**When using the default negotiation flow (`skipNegotiation = false`):**
27+
2228
* When using multiple servers without sticky sessions, the connection can start on one server and then switch to another server. The other server is not aware of the previous connection.
23-
* Verify the client is connecting to the correct endpoint. For example, the server is hosted at `http://127.0.0.1:5000/hub/myHub` and client is trying to connect to `http://127.0.0.1:5000/myHub`.
2429
* If the connection uses the ID and takes too long to send a request to the server after the negotiate, the server:
2530

2631
* Deletes the ID.
2732
* Returns a 404.
2833

34+
**When using WebSockets with `skipNegotiation = true`:**
35+
36+
* Since negotiation is skipped and no connection ID is obtained from `/negotiate`, the sticky session and connection ID timeout scenarios don't apply. A 404 in this case typically means the WebSocket endpoint URL is incorrect or the hub isn't mapped on the server.
37+
2938
### Response code 400 or 503
3039

3140
For the following error:

0 commit comments

Comments
 (0)