Использование SignalR с ASP.NET MVC3 - PullRequest
2 голосов
/ 29 сентября 2011

Я пытаюсь использовать концентраторы SignalR в приложении, но сейчас мне не везет. Я прочитал статью Скотта Хансельмана , а также посмотрел этот пост в блоге, который показывает, как реализовать его в MVC, в основном делая то же самое. К сожалению, мне не повезло. На стороне клиента javascript, кажется, работает нормально [не считая ничего не происходящего], но когда я ставлю точки останова в коде, он показывает, что вызывается контроллер, а не код концентратора. Код, который я использую, это:

// Client side javascript:
var hooking;
$(function() {
    // Setup SignalR
    hooking = $.connection.hooking;
    hooking.removeLead = function(ref) {
        $("lead" + ref).remove();
    };
    $.connection.hub.start();
    }
});

// Hooking.cs (placed in application root)
public class Hooking : Hub
{
    public void Submit(string jsonString)
    {
        var serializer = new JavaScriptSerializer();
        var json = serializer.Deserialize<HookingLeadResult>(jsonString);
        Clients.removeLead(json.Ref); // Remove lead from client hooking windows
        // update lead gen
    }
}

Когда я вызываю hooking.submit(resultJson); позже в моем коде, по какой-то причине он вызывает действие Index моего HookingController (текущей страницы). Кто-нибудь знает, как правильно вызвать функцию Submit из Hooking.cs?

Ответы [ 3 ]

2 голосов
/ 03 октября 2011

Было две проблемы с этим - 1. По какой-то причине старая версия jquery.validate вызывала ошибки, но ее обновление сортировало это.2. Я попытался привести к обнуляемому int, который, по-моему, не поддерживается.Я уверен, что есть более элегантные способы решить эту проблему, но я просто приводил свои обнуляемые входные данные к строкам и анализировал их, если не ноль

2 голосов
/ 29 сентября 2011

Вы смотрели на сетевой трафик в firebug или каком-либо другом инструменте, который отслеживает http-трафик, чтобы убедиться, что у вас нет ошибок?Это может быть связано с маршрутизацией.

Также примечание: вам не нужно сериализовать то, что мы делаем для вас.Просто отправляйте объекты туда и обратно.

Когда вы находитесь в приложении mvc, вам нужно включить скрипт-концентратор, как и любой другой статический скрипт:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
1 голос
/ 05 декабря 2011

jquery.validate.js был виновником.По какой-то причине это вызывало запрос GET, и после исключения файла js запросы SignalR начали запускать запрос POST.Возможно я должен обновить это как упомянутое Джорданом Валлворком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...