我正在尝试将SignalR Web应用程序部署到本地服务器上。服务器在Windows 7 Ultimate,IIS V7.5.7600.16385上运行。
使用IIS Express,我的笔记本电脑上的应用程序正常运行。
这是SignalR的最新版本,它会生成自己的signalr.html页面,用于调试集线器。在服务器上的该页面中,我在致电$.connection.hub.logging = true;
之前添加了对$.connection.hub.start();
的来电。
输出看起来像这样。
[16:22:49 GMT+0000 (GMT Standard Time)] SignalR: Client subscribed to hub 'notificationhub'. jquery.signalr-2.0.0.min.js:8
[16:22:49 GMT+0000 (GMT Standard Time)] SignalR: Negotiating with '/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&clientProtocol=1.3'. jquery.signalr-2.0.0.min.js:8
[16:22:49 GMT+0000 (GMT Standard Time)] SignalR: Attempting to connect to SSE endpoint 'http://192.168.2.9/signalr/connect?transport=serverSentEvents&connectionTok…HBFdOC&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&tid=6'. jquery.signalr-2.0.0.min.js:8
[16:22:49 GMT+0000 (GMT Standard Time)] SignalR: EventSource calling close(). jquery.signalr-2.0.0.min.js:8
[16:22:49 GMT+0000 (GMT Standard Time)] SignalR: This browser supports SSE, skipping Forever Frame. jquery.signalr-2.0.0.min.js:8
GET http://192.168.2.9/signalr/Error.htm jquery.signalr-2.0.0.min.js:8
[16:22:50 GMT+0000 (GMT Standard Time)] SignalR: Opening long polling request to 'http://192.168.2.9/signalr/connect?transport=longPolling&connectionToken=Ck…BFdOC&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&tid=10'. jquery.signalr-2.0.0.min.js:8
[16:22:50 GMT+0000 (GMT Standard Time)] SignalR: Stopping connection. jquery.signalr-2.0.0.min.js:8
[16:22:50 GMT+0000 (GMT Standard Time)] SignalR: Fired ajax abort async = true. jquery.signalr-2.0.0.min.js:8
[16:22:50 GMT+0000 (GMT Standard Time)] SignalR: LongPolling failed to connect. jquery.signalr-2.0.0.min.js:8
GET http://192.168.2.9/signalr/Error.htm jquery.js:8706
GET http://192.168.2.9/signalr/Error.htm
当我复制链接http://192.168.2.9/signalr/connect?transport=serverSentEvents&...
和http://192.168.2.9/signalr/connect?transport=longPolling&...
并将其粘贴到单独的浏览器窗口时,我会在SignalR错误页面上获得重定向循环。
我错过了任何明显的调试步骤吗?
编辑:通过Fiddler运行这些查询,告诉我/ signalr / connect链接重定向到login.aspx:
1 302 HTTP 192.168.2.9 /signalr/connect?transport=serverSentEvents&connectionToken=OcIKZ%2FgRaOBwdEp6gMtBmoflJkIWwcsfsjIU%2BznksMqCFTPAYkaQ1MDEihovbCgh4MnIuB9F6nJPELk8VAn7K2sqN9CXbhu%2FlwLEBWVTaUTYAEOE&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&tid=2 699 no-cache; Expires: -1 text/html; charset=utf-8
2 302 HTTP 192.168.2.9 /login.aspx?ReturnUrl=/signalr/connect?transport=serverSentEvents&connectionToken=OcIKZ%252FgRaOBwdEp6gMtBmoflJkIWwcsfsjIU%252BznksMqCFTPAYkaQ1MDEihovbCgh4MnIuB9F6nJPELk8VAn7K2sqN9CXbhu%252FlwLEBWVTaUTYAEOE&connectionData=%255B%257B%2522name%2522%253A%2522notificationhub%2522%257D%255D&tid=2&transport=serverSentEvents&connectionToken=OcIKZ/gRaOBwdEp6gMtBmoflJkIWwcsfsjIU+znksMqCFTPAYkaQ1MDEihovbCgh4MnIuB9F6nJPELk8VAn7K2sqN9CXbhu/lwLEBWVTaUTYAEOE&connectionData=%5B%7B%22name%22:%22notificationhub%22%7D%5D&tid=2 138 private text/html; charset=utf-8
所以这必须与连接令牌有关。还需要更多的调查。
答案 0 :(得分:1)
302错误可能意味着您已经拥有SignalR期望看到其中心的内容。一个故障排除步骤是手动生成代理,这样您就可以更好地控制在哪里创建的内容。请参阅以下内容:
http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting#other
http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#genproxy
答案 1 :(得分:0)
我注意到,当重定向到login.aspx时,您的connectionData参数被编码两次。它是
connectionData=%255B%257B%2522name%2522%253A%2522notificationhub%2522%257D%255D
但必须
%5B%7B%22name%22%3A%22notificationhub%22%7D%5D
,即[{"name":"notificationhub"}]
。
你能详细说明你收到的错误吗?