2017-04-03 60 views
2

我的SignalR聊天应用程序在本地机器上工作得很好,但是当在服务器上托管时,很少有方法在有时没有响应。我搜索了它的次数,并找到与此相关的解决方案。聊天应用程序在本地完美工作,但在服务器上没有正确响应 - signalr 2.2.1

  • ConnectionTimeout

  • DisconnectTimeout

  • 保持活动

这里是我的内轮毂

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); 
     }    
    } 
} 

代码在这里,名称是一个用户在进入提示对话框时进入并进行提醒在线自动提醒& alertOnlineOther是在线用户列表被添加到侧边栏中的客户端的方法。当一些人在30秒内上线时,服务器上的东西就在这里,alertOnlineToSelf & alertOnline其他方法被调用,但是如果在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中添加此配置。但这没有帮助。 如果有人有这方面的解决方案,请回复。 在此先感谢。

+0

您必须提供更多信息。什么方法?什么时候?发生了什么?错误? –

+0

P.S.我更新了邮报。感谢您宝贵的时间。 – Divya

+0

将随机超时更改为随机值从来就不是一个好主意。 – Pawel

回答

2

为此问题找到解决方案!

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

两个服务器之间的区别只是一个IIS版本,我的新的托管服务器已经IIS 8.0快递 &旧版本是IIS-7,假定它不支持最新版本的信号-R,我使用升级版本。

相关问题