Вопрос по signalr, iis, asp.net – SignalR / сигнализатор / концентраторы 404 не найдены

32

Я пытаюсь развернуть сайт SignalR на IIS. Код все отлично работает в VS. Но получить404 not found ошибка при попытке разрешить сигнализатор / концентраторы до сих пор я пытался.

1) Изменение ссылки на скрипт:

script src="<%= ResolveUrl("~/signalr/hubs") %>" type="text/javascript"></script>

2) Изменение Web.Config для включения:

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

3) Изменение запросов вызова на IIS дляUrlMappingsModule.

4) добавленоSignalR.Hosting.AspNet.dll чтобы увидеть, поможет ли это что-нибудь.

Не уверены, что еще можно попробовать или проверить, какую-либо помощь или указать в правильном направлении?

Ваш Ответ

13   ответов
0

с которой я столкнулся в версии IIS, я исправил, перезапустив AppPool, перезапустив веб и теперь он работает

2

изменив следующий appSetting в web.config на "true".

<add key="owin:AutomaticAppStartup" value="false" />
0

owin dependencies тогда я получил 404NotFound ошибка.

Когда я добавил следующие зависимости, я явно извлек файл Javascript прокси из ожидаемого URL. Нравится URL: 1111 / Singlar / Hubs

Microsoft.Owin Microsoft.Owin.Core Microsoft.Owin.Host.SystemWeb Microsoft.Owin.Security Owin

Надеюсь, что ответ поможет кому-то.

1

что AppPool вашего сайта настроен на правильную версию .NET Framework.

Это решило это для меня.
11

чтобы помочь сопоставить неизвестное расширение в URL-адресе сценария & quot; ~ signalr / hubs & quot;

Привет, не могли бы вы рассказать, как добавить карту приложения с подстановочными знаками, какие детали мне нужно добавить, где и т.д., пожалуйста? У меня есть эти симптомы сейчас, и я хотел бы попробовать этот ответ
это работает для меня тоже! Большое спасибо Chridam. Моя проблема заключалась в том, что сервер искал следующее «localhost / signalr / hubs» (определяется с помощью консоли разработчика Chrome). На самом деле, URL-адрес является динамическим, поэтому он не может подобрать необходимый файл js.
@chridam Я не знаю, как добавить карту приложения с подстановочными знаками. Пожалуйста скажи нам?
О да! это сработало отлично, спасибо!
0

reinstall все пакеты и восстановить все зависимости.

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

Update-Package -Reinstall
30

блема, и я исправил ее, убедившись, что мой global.asax.cs выглядел так:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RouteTable.Routes.MapHubs();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

Это было на веб-сайте с использованием SignalR, MVC и WebApi вместе.

Я не могу в это поверить!!! благодарю вас.
Хотя это не сработало для меня, оно указало мне правильное направление. В моем случае мне не хватало «app.MapSignalR ();» оператор в методе Startup.Configuration (приложение IAppBuilder). Так что спасибо тебе!
Дополнительная информация под заголовком «Ошибка 404 не найдена» Вот:asp.net/signalr/overview/troubleshooting-and-debugging/…
Далее - отображение концентраторов больше не требуется в сигнализаторе 2.0 и выше (и фактически генерирует ошибку):asp.net/signalr/overview/signalr-20/…
6

In the webconfig:

<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true"/>

In the page add reference to hub as

<script src="/signalr/signalr/hubs"></script>

instead of

<script src="/signalr/hubs"></script>
Вы знаете, как удалить второй / сигналщик?
& lt; script src = / / signalr / signalr / hubs & gt; / script & gt; работал на меня
0

найдены

Hit the url in the browser /signalr/hubs - if there is an error, you will see the full error come back. check for duplication of HubName attribute if you have base class ensure you have the correct version referenced in all projects (as to avoid binding errors)
16

что концентраторы не отображаются, ранее это должно было быть сделано в ответ SimonF. Если вы используете SignalR версии 2RouteTable.Routes.MapHubs(); сейчас устарел. Для отображения концентраторов вы можете создать класс запуска, как показано ниже.

[assembly: OwinStartup(typeof(WebApplication1.Startup))]
namespace WebApplication1
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

референция:http://www.asp.net/signalr/overview/releases/upgrading-signalr-1x-projects-to-20

от какого класса вы унаследовали свой global.asaxpublic class MvcApplication : System.Web.HttpApplicationЯ использовал класс MvcApplication, и это сработало для меня. Я не продолжил с этим, я использовалOwinStartup  поэтому я попробую это снова и сообщу вам о Application_Start. Но я могу заверить, что 1-й точно работает.
Я думаю, что вы ошибаетесь. Там нет перегрузки дляApplication_Start сIAppBuilder - Я не смог найти в новой версии ASP.NET либо
@Simon_Waaver вы правы, что-то не так. когда я прохожуIAppBuilder в глобальном.HTTP Error 403.14 - Forbidden ошибка, это происходит для просмотра каталогов, я не знаю, почему, нет ошибки компиляции. Отредактировал ответ и убрал второй подход
0

это был проект asp.net, использующий signalR, он работал должным образом до того, как я опубликовал, но когда я размещал его в IIS, он не работал.

После того, как я проверил, я понял, что адрес / сигнализатор / концентраторы не верны, позвольте мне объяснить больше, просто сделайте следующие шаги:

Open up your web application in the browser (Using IIS), you see the interface you designed, yeah? now press ctrl+U or right click on the page an select View Page Source.

You will see multiple links starting with <script> tag at the top of the page, find something like <script src="/signalr/hubs"></script> now click on it, if you are taken to the page which involves "404 - File or directory not found."you have some mistakes on defining address, find the true address and change the address in the address bar to observe the true result

В моем случае мне нужно было добавить имя моего проекта в начале адреса, поэтому мне пришлось изменить адрес с:

<script src="/signalr/hubs"></script>

в

<script src="/MoveShape/signalr/hubs"></script>

в котором MoveShape было моим именем проекта, теперь после нажатияctrl+U в браузере и следуя ранее сказанным шагам, вы нажимаете на ссылку, и на этот раз вы видите истинный результат, на странице отображаются коды, начинающиеся с:

/*!
 * ASP.NET SignalR JavaScript Library v2.2.2
 * http://signalr.net/
 *
 * Copyright (c) .NET Foundation. All rights reserved.
 * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 *
 */

да уж! это работает правильно, имейте в виду, что у меня не было проблем при тестировании с использованием Visual Studio, но не после размещения в IIS, так как другие рекомендовали указать правильный адрес, применяя<%= ResolveUrl("~/") %> или другие методы.

1

Убедитесь, что этот код запускается при запуске.

 Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RouteTable.Routes.MapHubs()
 End Sub

Потому что я добавил global.asax в свое приложение, а затем код, но поместил это в файл Global.asax.

 <%@ Application Language="VB" CodeBehind = "Global.asax.vb" %> /*This was wrong*/

Поэтому, когда я попытался запустить приложение, Application_Start в моем global.asax не инициализировал концентратор. вот почему он не может разрешить сигнализаторы / концентраторы

исправлено с этим в моем Global.asax

 <%@ Application Inherits="_Global" Language="VB" %>

и это в моем Global.asax.vb:

 Public Class _Global
     Inherits System.Web.HttpApplication
Примечание. Сопоставление концентраторов больше не требуется в SignalR версии 2.0 и выше:asp.net/signalr/overview/signalr-20/…
0

но я ошибся. Я бы посоветовал вам взглянуть на источник и увидеть, куда на самом деле указывает скрипт, убедитесь, что он разрешает каталог приложения. И убедитесь, что вы можете физически открыть файл с правильным путем в вашем браузере. Например.

<script src="/MyWebApp/signalr/hubs" type="text/javascript"></script>  

Можете ли вы открыть файл из браузера (заменив его на правильный подкаталог)?

В противном случае концентратор может быть настроен неправильно и может указывать правильное направление. Скрипач это.

Синтаксис, который я использовал, был:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>  

Это может быть разница междуUrl.Content и ResolveUrl

Похожие вопросы