2015-06-19 2 views
3

У меня есть 2 класса Концентратор в моем проектеSignalR не вызвать seconf концентратора класса

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();

Но can not find seoContentValidator.server.validator();

Что я делаю неправильно в SeoContentValidator, что signalR не может найти его

+1

Я запустил ваш код и не могу воссоздать ошибку. Я установил точки останова для обоих методов Validator(), и оба они попадают. То есть с 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); 
     } 
    } 

Оберните методы хаб в примерочных улове блоков, это может помочь.

Дайте мне знать, если вы нашли ошибку.

Смежные вопросы