c# - 聊天应用程序在本地运行良好,但在服务器上无法正确响应 - signalr 2.2.1

标签 c# jquery signalr

我的 SignalR 聊天应用程序在本地计算机上运行得很好,但是当托管在服务器上时,很少有方法有时不响应。我搜索了很多次并找到了与此相关的解决方案。

  • 连接超时

  • 断开连接超时

  • 保持事件

这是我在 Hub 中的代码

public class ChatHub : Hub
{
    static List<User> connectedusers = new List<User>();
    string time = DateTime.Now.ToShortTimeString();

    public void Connect(string Name)
    {
        var conId = Context.ConnectionId;
        if (Name != null)
        {
            connectedusers.Add(new User { ConId = conId, Name = Name });
        }
        if (connectedusers.Count > 1)
        {
            List<User> onlineUserlst = new List<User>();
            onlineUserlst = (from a in connectedusers
                             where a.ConId != conId
                             select a).ToList();
            Clients.Caller.alertOnlineToSelf(onlineUserlst, time);
            Clients.Others.alertOnlineOthers(Name, time,conId);
        }            
    }
}

这里,Name是用户上网时在提示对话框中输入的名称,alertOnlineToSelf和alertOnlineOthers是客户端的方法,在侧边栏中附加在线用户列表。事情就在服务器上,当有人在 30 秒内上线时,将调用alertOnlineToSelf 和alertOnlineOthers 方法,但如果相同的人在 30 秒或更长时间后上线,则为该人调用其他方法,但仅为该人调用调用者方法尽管我传递了所有在线用户的列表,但并非所有在线用户都在前 30 秒内在线。

所以我在 global.asax 文件中进行了此更改

    protected void Application_Start()
    {
        GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(800000);
        GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(600000);
        GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(200000);
    ...
    }

在启动文件中进行这些更改根本没有显示效果,因此我在 global.asax 中添加了此配置。但这并没有帮助。 如果有人对此有解决方案,请回复。 提前致谢。

最佳答案

找到了这个问题的解决方案!

实际上上面的代码运行得很好, 我刚刚更改了托管服务器

两台服务器之间的差异仅在于 IIS 版本,我的新托管服务器具有IIS 8.0 Express,旧版本是IIS-7 strong>,假设它不支持最新版本的signal-R,我使用升级版本。

关于c# - 聊天应用程序在本地运行良好,但在服务器上无法正确响应 - signalr 2.2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43177117/

相关文章:

SignalR 1.0 beta 连接工厂

c# - 如何在远程计算机上执行命令?

c# - 这是清除 C# MemoryCache 的好解决方案吗?

c# - 将 Windows 窗体文本框输入值与数据库 C# SQL 中的值进行比较

c# - 如何在 C# 中创建动态 GroupBox

javascript - 在javascript中将多维数组元素转换为整数

javascript - Bootstrap v4.1 : Closing a collapse menu when clicking outside of div

jquery将 'rel'内的值变成变量

javascript - 何时从浏览器关闭与 SignalR 的连接

c# - SignalR:我无法从服务器调用 .net 客户端方法