c# - SignalR 2 StartAsync 永远不会返回
问题描述
在类的以下部分中,StartAsync 永远不会返回。
任何想法为什么?服务器似乎工作正常,并且可以与 Javascript 客户端一起使用。
SignalR 客户端版本为 v1.0.0-rc1-final
public HubUtil(string baseUrl) //string clientId
{
connection = new HubConnectionBuilder()
.AddJsonProtocol()
.WithUrl(baseUrl) // baseUrl is "https://hostname/hubname"
.Build();
connection.Closed += Connection_Closed;
StartIfNeededAsync();
}
private Task Connection_Closed(Exception arg)
{
return StartIfNeededAsync();
}
public async Task StartIfNeededAsync()
{
if (_connectionState == ConnectionState.Connected)
{
return;
}
try
{
await connection.StartAsync(); // Never connects
_connectionState = ConnectionState.Connected;
}
catch (Exception ex)
{
_connectionState = ConnectionState.Faulted;
throw;
}
}
从一个基本的控制台应用程序中,这就是 hubutil 的调用方式:
static void Main(string[] args)
{
var hub = new HubUtil("https://host/hubname");
hub.Invoke("checkin", "id", "");
}
解决方案
我已经回答了关于 SO 的类似问题。我不想在这里复制和粘贴它,所以这里是链接:
https://stackoverflow.com/a/58551924/603807
由于这是指向我自己在 SO 网站上的答案的链接,我希望这对于不喜欢仅链接答案的版主来说是一个通行证。
推荐阅读
- java - 如何操作http GET请求整数参数?
- firebase-analytics - 如何创建过去活跃但上周不活跃的用户群
- spring - 对 stockitem 进行 GET 调用的未经授权的 401 错误
- javascript - Paypal Checkout 按钮 - 环境配置 - Angular 6
- python - 删除列中的重复值
- docker - docker exec -ti 和 docker exec -it 有什么区别?
- python-2.7 - Python 2.7 - 立即将输出重定向到日志文件
- docker - Alpine - Docker:返回非零代码:139
- html - 在图标旁边对齐文本或跨越 unicode 字符
- csv - 如何使用 c# 将 csv 文件转换为制表符分隔的 .txt 文件