2017-04-03 47 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,我使用升級版本。

相關問題