聊天应用程序在本地完美运行但在服务器上没有正确响应 - 信号器2.2.1

时间:2017-04-03 05:32:12

标签: c# jquery signalr

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

  • ConnectionTimeout

  • DisconnectTimeout

  • 的KeepAlive

这是我在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&amp; alertOnlineOthers是客户端的方法,其中联机用户列表附加在侧栏中。当有人在30秒内上线时,事情就在服务器上,alertOnlineToSelf&amp; alertOnlineOthers方法被调用,但是如果在30秒或更长时间之后相同,则会为该人调用其他方法,但只有在过去30秒内上线的人才会调用调用方法,而不是所有在线的人,尽管我是m通过所有在线用户的列表。

所以我在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中添加了这些配置。但这没有帮助。 如果有任何人有解决方案,请回复。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

获得此问题的解决方案!

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

两台服务器之间的区别只是IIS版本,我的新托管服务器有 IIS 8.0 Express &amp;旧版本 IIS-7 ,假设不支持 signal-R 的最新版本,我使用的是升级版。