Asp.net mvc MVC3中的信号机,定时和启动/连接问题?

Asp.net mvc MVC3中的信号机,定时和启动/连接问题?,asp.net-mvc,asp.net-mvc-3,c#-4.0,signalr,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,Signalr,我对MVC3和信号机有一个非常奇怪的问题。。我有一个简单的枢纽 [HubName("test")] public class Test: Hub { public object GetStuff() { return new { dummy = "Test" }; } } 和一些客户端代码 var connection = $.connection.test; connection.start(); connection.getStuff(); 这是一

我对MVC3和信号机有一个非常奇怪的问题。。我有一个简单的枢纽

[HubName("test")]
public class Test: Hub
{
    public object GetStuff()
    {
        return new { dummy = "Test" };
    }
}
和一些客户端代码

var connection = $.connection.test;
connection.start();
connection.getStuff();
这是一个错误

TypeError:Object#没有方法“start”

如果我改为

var connection = $.connection("test");
我得到一个不同的错误

TypeError:Object#没有方法“getStuff”jquery-1.6.4.min.js:4

405后(不允许使用方法)

注意:出于某种原因,它试图在控制器下进行协商

有什么具体的路线需要我登记吗?还有什么我不知道的魔法

更新 所以在控制台上玩一玩——第一个版本实际上创建了一个对象,它有getStuff(),我可以调用它。但signer吐了,因为我必须先调用start(),这是不存在的!第二个创建了一个对象,该对象有start(),但没有getStuff()

更新2
尝试改为执行$.connection.hub.start。这似乎在控制台中起作用,但在页面加载中不起作用。。可能在中心调用之前启动尚未完成?它是异步的吗?

启动信号机连接不是瞬时的。调用
connection.GetStuff()可能会失败。如果希望在与集线器建立连接后运行此代码,则应使用回调函数

var connection = $.connection.test;
$.connection.hub.start(function(){        
    // By convention all exposed hub methods start with lowercase
    connection.getStuff();
});
集线器快速启动:

深入了解signarjavascript客户端:

尝试以下操作:


var connection=$.connection(@Url.Content(“~/echo”)

必须添加轮毂部分:

$.connection.hub.start();

无法确定-但对于第二种情况,它可能区分大小写。两者都不起作用,协商url返回404,因为它不存在(集线器位于根位置)…也尝试了这一点-并在代码中设置计时器。它的start()方法非常慢。同样的代码,但是在webforms中而不是在mvc中连接只需0.2秒。在MVC模式下,3-5秒。。MVC方面可能存在一些冲突?