2013-03-03 63 views
1

我需要为基于JavaScript的crm应用程序启动websocket服务器。我研究这个例子:Create "Hello World" WebSocket example 但我无法建立连接。计划抛出入门C#websocket应用程序

异常
var key = headerResponse.Replace("ey:", "`") 
           .Split('`')[1]      // dGhlIHNhbXBsZSBub25jZQ== \r\n ....... 
           .Replace("\r", "").Split('\n')[0] // dGhlIHNhbXBsZSBub25jZQ== 
           .Trim(); 

框架从客户端发送如下所示:

GET/HTTP/1.1 主机:本地主机:9801 连接:保活 的Cache-Control:MAX-用户代理:Mozilla/5.0(Windows NT 6.2; WOW64)AppleWebKit/537.22 (KHTML,像Gecko)Chrome/25.0.1364.97 Safari/537.22 0123接受编码:gzip,deflate,sdch Accept-Language:pl-PL,pl; q = 0.8,en-US; q = 0.6,en; q = 0.Accept-Charset:ISO-8859-2,utf -8; q = 0.7,*; q = 0.3

框架的关键部分在任何浏览器上都丢失了。如何解决这个问题?

+1

**的边界之外什么异常说**? – SLaks 2013-03-03 16:53:09

+0

请在标题中添加换行符。 – SLaks 2013-03-03 16:53:30

+0

错误消息:“索引超出了数组的范围”。框架的“关键”部分不存在,所以关键字不能从字符串中解析。这个键是必需的吗? – 2013-03-03 19:03:41

回答

0

你这样做的方式在例外方面看起来有点不太合适。 尝试通过验证您收到的值来防止此问题。 我不能说您的问题恰恰是,但这应该解决您的

指数是数组

string key = ""; 
    if (string.IsNullOrEmpty(headerResponse)) 
    { 
     //No header response... handle it ;) 
    } 
    var replacedString = headerResponse.Replace("ey:", "`"); 
    string[] splitted = replacedString.Split('`'); 
    if (splitted.Length > 1) 
    { 
     string replaced2 = splitted[1].Replace("\r", ""); 
     string[] splitted2 = replaced2.Split('\n'); 
     if (splitted2.Length > 0) 
     { 
      key = splitted2[0].Trim(); 
     } 
     else 
     { 
      // '\n' not found 
     } 
    } 
    else 
    { 
     // '`' not found 
    } 

    if (string.IsNullOrEmpty(key)) 
    { 
     //do error correction 
    } 
    else 
    { 
     //everything is fine 
    }