SignalR "сигнализатор / концентратор", выдающий ошибку 404 - PullRequest
49 голосов
/ 20 января 2012

Я использую SignalR (https://github.com/SignalR/SignalR) в моем проекте. Отсюда https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs Я получил представление о том, как использовать концентраторы. Но скрипт "signalr / hubs" выдает ошибку 404. Вот URL, которыйстановится в представлении Источник: http://localhost:50378/signalr/hubs дает ошибку 404

Вот мой код: Hub:

public class Test:Hub
{
    public void Start()
    {
        Caller.guid = Guid.NewGuid();
    }

    public void TestMethod()
    {
        Clients.show("test", Caller.guid);
    }
}

ASPX:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Title</title>
        <script src="../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
        <script src="../Scripts/jquery.signalR.js" type="text/javascript"></script>
        <script src="<%= ResolveUrl("~/signalr/hubs") %>" type="text/javascript"></script>
        <script type="text/javascript">

            $(document).ready(function () {
                var test = $.connection.test;
                $("#btnTest").click(function () {
                    test.testMethod();
                });
                test.show = function (text, guid) {
                    if (guid != test.guid) //notify all clients except the caller
                        alert(text);
                };
                $.connection.hub.start(function () { test.start(); });
            });

        </script>
    </head>
    <body>
        <form id="HtmlForm" runat="server">
            <div>

            </div>
        </form>
    </body>
</html>

Web.config:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
....

Ответы [ 19 ]

1 голос
/ 19 мая 2016

Возможно, стоит упомянуть: я запускаю приложение Web Forms, которое использует свою собственную ручную маршрутизацию. Так как запуск OWIN происходит после того, как таблицы маршрутизации были установлены, маршрут для / signalr / hubs никогда не был достигнут. Я добавил правило для игнорирования маршрутов (IE: пусть веб-формы выполняют маршрутизацию) на любом пути, начинающемся с "/ signalr". Это решило мою проблему.

1 голос
/ 24 января 2013

Мой проект - ASP.net 4.0 C # Web App, среда тестирования - Windows Server 2012.

У меня была та же проблема с 1.0.0 RC2, я сделал то, что предлагает Майкл, и он работает.Спасибо.

@ MatteKarla: При установке SignalR 1.0.0 RC2 от NuGet в проект добавляются следующие ссылки:

  • Microsoft.AspNet.SignalR.Core
  • Microsoft.AspNet.SignalR.Owin
  • Microsoft.AspNet.SignalR.SystemWeb
  • Microsoft.Owin.Host.SystemWeb

Я должен добавить Microsoft.CSharp вручнуюили во время компиляции произойдет следующая ошибка:

  • Предопределенный тип 'Microsoft.CSharp.RuntimeBinder.Binder' не определен или импортирован
1 голос
/ 24 ноября 2015

Я тоже сталкивался с такой же проблемой в приложении ASP.NET 4.0 Web Forms.Он работал на серверах разработки, но не в производственных средах.Решение обеспечить выполнение всех запросов / модулей в управляемом режиме для нас неприемлемо.

Решение, которое мы использовали (лучше для веб-форм ASP.NET), заключается в следующем.Добавьте следующий раздел в Web.Config:

<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
</modules>
1 голос
/ 15 января 2014

У меня было 404 ошибки, когда я обновил до Signalr 2.0 и развернул проект MVC на рабочем сервере. Публикация проекта с опцией «удалить все существующие файлы перед публикацией» избавила меня от проблем.

надеюсь, это кому-нибудь поможет.

0 голосов
/ 23 июня 2017

добавление app.MapSignalR(); в Startup класс решает проблему

0 голосов
/ 27 мая 2017

Для меня решение было переустановить все пакеты и восстановить все зависимости.

Откройте nuget powershell и используйте эту команду.

Update-Package -Reinstall
0 голосов
/ 07 октября 2016

вам не нужен файл signalr / hubs, просто для упрощения отладки и простого способа вызова функции. смотрите: Посмотрите, что сгенерированный прокси для вас делает , вот и все. Вещи будут работать без этого.

0 голосов
/ 29 июля 2016

может быть связано с тем, что ваше имя класса-концентратора - «Тест», а вы ссылаетесь на «тест» на стороне клиента.

0 голосов
/ 02 марта 2016

Я решил эту проблему, переключив пул приложений .NET Framework версии с v2.0 на v4.0.

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