Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Signalr 信号器自主机:必须先启动连接,然后才能发送数据。在.send()之前调用.start()_Signalr - Fatal编程技术网

Signalr 信号器自主机:必须先启动连接,然后才能发送数据。在.send()之前调用.start()

Signalr 信号器自主机:必须先启动连接,然后才能发送数据。在.send()之前调用.start(),signalr,Signalr,我知道这是另一篇关于这个问题的帖子:) 我正试图重写我的项目以使用SignalR自宿主库(根据教程),但现在无法通过此错误 我按如下方式初始化连接: $.connection.hub.url = "http://localhost:8182/signalr"; $.connection.hub.logging = true; var connection = $.connection.hub.start(); console.log(connection.state()); connecti

我知道这是另一篇关于这个问题的帖子:)

我正试图重写我的项目以使用SignalR自宿主库(根据教程),但现在无法通过此错误

我按如下方式初始化连接:

$.connection.hub.url = "http://localhost:8182/signalr";
$.connection.hub.logging = true;
var connection = $.connection.hub.start();

console.log(connection.state());

connection.done(function () {
    console.log(connection.state());
    [...] // initialising viewmodels in here...
});
初始化第一个viewmodel时,我根据线程主题得到错误:

[17:29:14 GMT+0100 (GMT Daylight Time)] SignalR: Auto detected cross domain url. jquery.signalR-2.0.3.js:76
[17:29:14 GMT+0100 (GMT Daylight Time)] SignalR: Negotiating with 'http://localhost:8182/signalr/negotiate?clientProtocol=1.3'. jquery.signalR-2.0.3.js:76
pending main.js:218
[17:29:14 GMT+0100 (GMT Daylight Time)] SignalR: Attempting to connect to SSE endpoint 'http://localhost:8182/signalr/connect?transport=serverSentEvents&connection…pdQlpKjRBpUhB0PY4itVfHasSmixQAAAB0HA7hA9gYDflrhGockG%2FZR55tLg%3D%3D&tid=1'. jquery.signalR-2.0.3.js:76
[17:29:14 GMT+0100 (GMT Daylight Time)] SignalR: EventSource connected. jquery.signalR-2.0.3.js:76
[17:29:14 GMT+0100 (GMT Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000. jquery.signalR-2.0.3.js:76
resolved main.js:220
Object {getAccountActions: function, getIncidentActionCount: function, getIncidentActions: function, refreshAccountActions: function, refreshActions: function…}
 IncidentAction.js:12
Uncaught Error: SignalR: Connection must be started before data can be sent. Call .start() before .send() 
I console.log connection.done之后的连接状态,并清楚地显示为已解决

同样在我初始化的第一个viewmodel中,I console.log connection.server和我的所有服务器方法都在那里可见,如上面的代码片段所示

服务器端代码:

class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:8182";
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }
有什么建议吗?为什么即使连接已“解决”,我仍会出现此错误


编辑:最初,我将服务器上的Owin启动类移动到解决方案中的另一个项目,我认为这是问题的原因。当我把它放在我的signalR self host项目中时,错误消失了

连接状态应该是已连接的

试着这样做:

 $.connection.hub.start().done(function () {
         console.log(connection.state());
     })  .fail(function (error) {
         console.log('Invocation of start failed. Error:'+ error)
     });

这正是我在上面代码中所做的(它被分成两行)。我可以按照您的建议将它们合并为一行:var connection=$.connection.hub.start().done(function(){console.log(connection.state();}).fail(function(error){console.log('start调用失败。error:'+error)});但结果是一样的:console将连接状态显示为“已解决”,但当我初始化viewmodel并尝试从服务器获取数据时,会显示来自线程主题的错误。是否运行fiddler查看是否有数据从客户端发送?您还可以在hub公共覆盖任务OnConnected()中进行覆盖要查看客户端是否访问了服务器,我将接受它作为一个答案,因为它帮助我识别了问题。从未在服务器上调用OnConnected方法。我已经将服务器上的Startup类移动到解决方案中的另一个项目中,我认为这是问题的原因。当我把它放在与我的signalR self host项目相同的位置时,错误就消失了