【发布时间】:2012-04-06 16:20:46
【问题描述】:
我在使用 MVC3 和信号器时遇到了一个非常奇怪的问题。我有一个简单的集线器;
[HubName("test")]
public class Test: Hub
{
public object GetStuff()
{
return new { dummy = "Test" };
}
}
还有一些客户端代码;
var connection = $.connection.test;
connection.start();
connection.getStuff();
这会引发错误;
TypeError: Object # has no method 'start'
如果我这样做
var connection = $.connection("test");
我得到一个不同的错误;
TypeError: Object # has no method 'getStuff' jquery-1.6.4.min.js:4
POST http://localhost:63021/Controller/test/negotiate 405(方法不允许)
注意到它出于某种原因试图在控制器下进行协商?
我需要注册一些特定的路线吗?还有什么我不知道的魔法?
更新 所以玩了一下控制台——第一个版本实际上创建了一个我可以调用的具有 getStuff() 的对象。但是 signalr 抛出了,因为我必须先调用 start() - 这不存在!第二个创建了一个具有 start() 的对象,但它没有 getStuff()..
更新 2 尝试做 $.connection.hub.start 代替。这似乎在控制台中有效,但在页面 onload 中无效。在进行集线器调用之前可能启动没有完成?是异步的吗?
【问题讨论】:
-
不能肯定地说 - 但它可能区分大小写
getStuff与GetStuff对于您的第二种情况。 -
两者都不起作用,并且协商 url 返回 404,因为它不存在(集线器位于根目录)..
标签: asp.net-mvc asp.net-mvc-3 c#-4.0 signalr