-1

我使用 signalR 编写了一个聊天应用程序。它是一个包含标记和运行聊天的 javascript 的 ASCX 控件。包含用户控件的页面有一个更新面板,它呈现异步并允许用户刷新某些特定于输入代码的内容。问题是,我可以多次单击刷新按钮,页面的行为没有任何问题。当我单击以连接聊天(全部在 JavaScript 中构建)并单击几次刷新按钮时,它似乎表现良好,但突然页面刹车并记录了一些视图状态错误,说:状态信息对此无效页面,可能已损坏。无效的视图状态..等等等等......这是一个丑陋的错误。

这只发生在我连接到集线器时。如果我不启动连接,这永远不会发生。

不过要提一提的是,控件背后的代码将一些值存储在引用视图状态的属性中(不将其存储在视图状态中,页面在每次回发时都会停止),稍后将其写入标记中,因此启动聊天知道谁应该成为对话的一部分。

请帮忙。

这里有一些代码:

StandAlonePanel.aspx -> 包含带有刷新按钮的更新面板。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();

//-- 脚本连接

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

1 回答 1

-1

我想我要结束这个问题了,因为它只发生在我的 asp 开发环境中。当我将应用程序部署到 iis 时,它不会出现同样的问题

于 2012-11-28T18:40:52.503 回答