2012-11-27 45 views
-1

我已經使用signalR編寫了一個聊天應用程序。這是一個包含標記和運行聊天的JavaScript的ASCX控件。保存用戶控件的頁面具有一個呈現異步的updatepanel,並允許用戶刷新特定於輸入代碼的某些內容。問題是,我可以多次點擊刷新按鈕和頁面的行爲沒有任何問題。當我點擊連接聊天(全部使用JavaScript構建)時,我點擊了幾次刷新按鈕,它看起來表現良好,但突然頁面剎車,並且一些視圖狀態錯誤被記錄爲:狀態信息對此無效頁面並可能已損壞。無效的視圖狀態..等等等等...這是一個醜陋的錯誤。SignalR集線器連接在幾次回發後損壞視圖狀態

這隻發生在我連接到集線器時。如果我不發起連接,這從來就不會發生。

雖然有一點需要注意,控件背後的代碼在引用視圖狀態的屬性中存儲了一些值(而不是將其存儲在視圖狀態中,每次回發時頁面剎車)發起聊天的腳本知道誰應該成爲對話的一部分。

請幫忙。

一些代碼在這裏:

StandAlonePanel.aspx - >包含刷新按鈕,在UpdatePanel。 ChatControl.ascx - >

public int userId{ 
     get 
     { 
      if (ViewState["UserID"] == null) 
       ViewState["UserID"] = 0; 
      return Convert.ToInt32(ViewState["UserID"]); 
     } 
     set 
     { 
      ViewState["UserID"] = value; 
     } 
    } 
//--- Same for userName 

if (userId == 0 && CurrentUserSession.User != null) 
{ 
    this.userId = CurrentUserSession.User.Id; 
    this.userName = CurrentUserSession.User.Name; 
} 
在標記

var userInfo = { 
    userId : "<%= userId %>", 
    userName : "<%= userName %>",   
    IsAnonymized: "<%= IsAnonymized %>", 
    enableLogging: "<%= enableLogging %>" 
} 



if (chat != null) { 
     chat.Disconnect(); 
    } 



chat = new Chat(userInfo); 
    chat.Connect(); 

// - 腳本參數conn

var hubConn = $.hubConnection(url); 

hubConn.logging = self.enableLogging 
hubConn.qs = { 'u': userInfo.userId, 'tc': '0', 'oo': userInfo.showOnlineOnly, 'ach': self.IsAnonymized, 'lgch': self.enableLogging }; /* Initiating queryString */ 


hubConn.error(function (error) { 
    logMe(error); 
}); 

var hubProxy = new ChatProxy(hubConn); 

/* hook up callbacks to hubProxy */ 

self.Connect = function() { 
    if (self.longpolling == true) { 
     hubConn.start({ transport: 'longPolling' }).done(function (result) { 
      ///--    
     }).fail(function (error) { 
      ///-- 
      alert("error" + error); 
     }); 
    } 
    else { 
     hubConn.start().done(function (result) { 
      ///--    
     }).fail(function (error) { 
      ///-- 
      alert("error" + error); 
     }); 
    } 
} 
+0

這個「刷新」是做什麼的?有代碼嗎? –

+0

這是一個複雜的過程。一目瞭然..代碼檢查數據庫中是否存在某個數字,否則在某些系統(PACS系統)中進行查詢。當信息被檢索時,一些信息刷新頁面 – user1791567

+0

我想我正在關閉這個問題,因爲它只發生在我的asp開發環境。當我將應用程序部署到iis時,它不會出現相同的問題。 – user1791567

回答

-1

我想我關閉這個問題,因爲它只發生在我的asp開發環境。當我將應用程序部署到iis時,它不會出現相同的問題