在启动前设置 ASP.NET Core SignalR 客户端的代理
通过 HttpConnectionOptions 配置 ASP.NET Core SignalR 客户端,使协商和所选传输走预期路由。
在启动 ASP.NET Core SignalR 客户端之前,先配置其连接选项:
var connection = new HubConnectionBuilder()
.WithUrl("https://events.example/hub", options =>
{
options.Proxy = new WebProxy("http://proxy.example:8080");
})
.Build();
此片段使用新版 SignalR 客户端和 System.Net。请通过应用程序的异步生命周期管理 connection ;将 hub URL 保留为目标地址。对于未配置代理凭据且获准的公共 hub 测试, HTTP 代理列表 可提供候选 HTTP 中间服务器。
| 传输设置 | 代理的适用范围 |
|---|---|
| 默认连接行为 | HttpConnectionOptions.Proxy 会选中中间服务器;.NET 8 的默认 WebSocket 传输也会将其赋给 ClientWebSocketOptions |
HttpMessageHandlerFactory | 自定义的是 HTTP 处理,而非 WebSocket 连接 |
所提供的 WebSocketFactory | 拥有自己的创建行为,必须应用其所需路由 |
协商成功并不能证明后续 WebSocket 隧道已被接受。如果自定义 WebSocketFactory 使用 .NET ClientWebSocket, 请在连接前配置该套接字的代理. 请阅读最后完成步骤的传输诊断信息,并检查任何有意启用的回退传输。
较早的 ASP.NET SignalR 示例所设置的 Connection.Proxy 属于另一代 API。使用 HubConnectionBuilder 时,应将代理与其他 WithUrl 传输选项放在一起,而不是去配置一个无关的 HTTP 请求。