我的项目中有2个Hub类
public class FolderManager : Hub
{
public FolderManager()
{
}
public void Validator()
{
}
}
public class SeoContentValidator : Hub
{
public SeoContentValidator()
{
}
public void Validator()
{
}
}
我有我的Start Class
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
在我看来,我有这个脚本
<script src="~/Scripts/jquery.signalR-2.2.0.js" type="text/javascript"></script>
<script src="~/signalr/hubs" type="text/javascript"></script>
<script>
jQuery(document).ready(function(){
var folderManager = $.connection.folderManager;
var seoContentValidator = $.connection.seoContentValidator;
$.connection.hub.logging = true;
$.connection.hub.start().done(function () {
folderManager.server.validator();
seoContentValidator.server.validator();
});
});
</script>
我遇到的问题是signalR可以找到并调用folderManager.server.validator();
但是找不到seoContentValidator.server.validator();
我在SeoContentValidator中做错了,signalR无法找到它
答案 0 :(得分:0)
这应该可以正常工作。事实上,我试过你的例子。 我的signalr / hubs生成的代理具有以下代码:
proxies['folderManager'] = this.createHubProxy('folderManager');
proxies['folderManager'].client = { };
proxies['folderManager'].server = {
validator: function () {
return proxies['folderManager'].invoke.apply(proxies['folderManager'], $.merge(["Validator"], $.makeArray(arguments)));
}
};
proxies['seoContentValidator'] = this.createHubProxy('seoContentValidator');
proxies['seoContentValidator'].client = { };
proxies['seoContentValidator'].server = {
validator: function () {
return proxies['seoContentValidator'].invoke.apply(proxies['seoContentValidator'], $.merge(["Validator"], $.makeArray(arguments)));
}
};
开始时我的js日志声明:
[ ... ] SignalR: Invoking foldermanager.Validator
[ ... ] SignalR: Invoking seocontentvalidator.Validator
我还在hub方法上设置了断点,并在调试模式下运行应用程序。两个断点都被触发。
我复制的JS代码是否存在于生成的代理文件中? 运行时没有JS错误?
我认为您编写的示例代码不是您的实际代码。尝试调试代码,也使用详细的错误消息:
public class Startup {
public void Configuration(IAppBuilder app) {
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableDetailedErrors = true;
app.MapSignalR(hubConfiguration);
}
}
将您的集线器方法包装在try-catch块中,它可以提供很多帮助。
如果您发现问题,请告诉我。