我尝试将signalr添加到webapi中,我创建了CucinaHub类:
public class CucinaHub : Hub
{
static ConcurrentDictionary<string, string> _users = new ConcurrentDictionary<string, string>();
#region Client Methods
public void SetUserName(string userName)
{
_users[Context.ConnectionId] = userName;
}
#endregion Client Methods
}
并配置SignalR:
services.AddSignalR();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<CucinaHub>("/cucinahub");
});
然后在Windows窗体应用程序中,我使用以下代码连接集线器:
_signalRConnection = new HubConnection($"{Properties.Settings.Default.URL}/api", true);
_hubProxy = _signalRConnection.CreateHubProxy("/cucinahub");
_hubProxy.On("GetValvole", async () => await GetValvole());
try
{
//Connect to the server
await _signalRConnection.Start();
}
catch (Exception ex)
{
Log.Error(ex.ToString());
}
我总是得到404响应代码:
托管环境:开发内容根路径:D:\SwDev\PigsutffHTML\服务器\通用\通用。WebApiCore正在侦听:http://localhost:5000应用程序已启动。按Ctrl+C关闭。信息:Microsoft.AspNetCore.主机托管.诊断[1]请求正在启动HTTP/1.1获取http://localhost:5000/api/信号/协商?客户端协议= 2.1和连接数据=[%7B%22名称%22:%22/cucinahub %22%7D] - -警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]无法确定用于重定向的https端口。信息:诊断[2]请求已完成HTTP/1.1获取http://localhost:5000/api/signalr/negotiate?clientProtocol = 2.1&connectionData =[%7B%22名称%22:%22/连接集线器%22%7D] - - - 404 0 - 122.4090毫秒
错误在哪里?谢谢
1条答案
按热度按时间zhte4eai1#
简短回答-您不能混合使用.NET 4.x框架和.NET核心服务器/客户端。任何一个都不能与另一个对话。您必须升级您的客户端。更多信息请参见此SO回答。