2015-06-19 60 views
3

我有2個集線器類在我的項目SignalR不叫seconf集線器類

public class FolderManager : Hub 
{ 
    public FolderManager() 
    { 
    } 
    public void Validator() 
    { 
    } 
} 

public class SeoContentValidator : Hub 
{ 
    public SeoContentValidator() 
    { 

    } 
    public void Validator() 
    { 
    } 
} 

我有我的入門級

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不能找到它

+1

我遇到你的代碼,並無法重新創建錯誤 - 我有兩個驗證()方法,無一不是擊中設置斷點。這就是VS2013和最新的SignalR軟件包。請儘可能提供更多細節。 – NigelK

回答

0

這應該只是罰款。其實我試過你的例子。 我signalr /集線器生成的代理具有下面的代碼:

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 

我還設置在輪轂上的方法斷點,跑在調試模式下的應用程序。兩個斷點都被觸發。

我複製的JS代碼是否存在於您生成的代理文件中? 運行時沒有JS錯誤?

我認爲你寫的示例代碼是不是你的實際代碼。嘗試調試您的代碼,並使用詳細的錯誤消息:

public class Startup { 
     public void Configuration(IAppBuilder app) { 
      var hubConfiguration = new HubConfiguration(); 
      hubConfiguration.EnableDetailedErrors = true; 
      app.MapSignalR(hubConfiguration); 
     } 
    } 

將您的hub方法包裝在try-catch塊中,它可以幫助很多。

如果您發現問題,請告訴我。