Soru SignalR “signalr / hubs” 404 hatası veriyor


Projemde SignalR (https://github.com/SignalR/SignalR) kullanıyorum. Buradan https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs Hub'ları nasıl kullanacağım konusunda fikrim var. Ama "signalr / hubs" betiği 404 hatası veriyor. İşte Görünüm Kaynağına dönüşen url: http: // localhost: 50378 / signalr / hub 404 hatası veriyor

İşte kodum: 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">
....

44
2018-01-20 12:37


Menşei


Kaynakları mı yoksa paketi mi kullanıyorsunuz? Bu noktada kaynaklar tamamen kararlı olmadığından paketi kullanmanızı tavsiye ederim. - davidfowl
Ayrıca hangi web sunucusunu kullanıyorsunuz? - davidfowl


Cevaplar:


Bir referans eklememiş olabilirsiniz. SignalR.AspNet.dll. Doğru hatırlıyorsam, rotayı ekleyerek /signalr/hubs.


27
2018-01-20 14:09



Bu derleme / kütüphane, SignalR.Hosting.AspNet.dll olarak yeniden adlandırıldı mı? Nuget paketini kullandım ve SignalR.AspNet.dll adlı bir kaynak göremiyorum - Dave Lawrence
Sanırım artık Microsoft.AspNet.SignalR.SystemWeb.dll - André Pena
@ AndréPena evet ... burada nuget.org/packages/Microsoft.AspNet.SignalR.SystemWebKullanılmamış DLLBu DLL sadece çalışma zamanında kullanıldığını bulmak için RSharper kullanarak proje s. Ah! - Leniel Maccaferri


MVC 4 kullanıyorsanız, Global.asax.cs içinde RouteConfig.RegisterRoutes (RouteTable.Routes) önce RouteTable.Routes.MapHubs () çağırın deneyin. Benim için çalışır.

        RouteTable.Routes.MapHubs();
        RouteConfig.RegisterRoutes(RouteTable.Routes);

43
2018-03-15 01:02



RouteConfig, WebApiConfig ve FilterConfig kayıtlarının eklenmesine yardımcı olduğunu belirten kaynaklar buldum, ancak bunlardan herhangi birine referans eklemek için kaynak bulamıyorum. Bunları eklemek için hangi referansı kullanmalıyım? - BTC
Evet bu benim için düzeltildi. Teşekkürler - John Mc
Çünkü, rota tablosunu MVC ile kaydetmeden önce Hub'ı rota tablosuna eklemeniz gerekir. - Adamy
"Öncesi" önemlidir! - theDmi
RouteTable.Routes.MapHubs(); şimdi eskimiş. app.MapSignalR(); bir çağrılmalı IAppBuilder owin başlangıç ​​sınıfında. - Jim Aho


İtibaren SignalR 1.0.0 RC2 Paketler klasöründe, Hubs yolunun manuel olarak oluşturulması gerektiğini belirten bir README var. :) İşte bir snippet ...

using System;
using System.Web;
using System.Web.Routing;

namespace MyWebApplication
{
    public class Global : System.Web.HttpApplication
    {
        public void Application_Start()
        {
            // Register the default hubs route: ~/signalr
            RouteTable.Routes.MapHubs();
        }
    }
}

14
2018-01-23 03:24



Bu artık eskimiş ve gerekli değil - bkz. asp.net/signalr/overview/releases/... - Simon_Weaver


Benim durumumda, bu 404'ün ana nedeni, hub'ların düzgün bir şekilde haritalandırılmamış olmasıdır. RouteTable.Routes.MapHubs(); şimdi eskimiş. Hubları eşlemek için, aşağıdaki gibi bir başlangıç ​​sınıfı oluşturabilirsiniz.

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

12
2018-02-12 11:45





Ben de bu sorunla uğraştım ve nihayet sorunun neden olduğu noktaya geldim. Öncelikle şunu söylemeliyim ki SignalR v2 çağrısı ileRouteTable.Routes.MapHubs(); içinde Globalasax / Application_Start eski ve derleyici bile uyarı atar. Bunun yerine, şimdi aşağıdaki genel yöntemle özel bir StartUp sınıfı ekliyoruz:

public void Configuration(IAppBuilder app)
{
    app.MapSignalR();
}

Tüm konfigürasyonlar buraya gider. belgeleme daha fazla bilgi için.

Şimdi, çılgınlık gibi birçok saati boşa harcadıktan sonra, daha önce bahsettiğim StartUp sınıfının Configure (Yapılandırma) yönteminde bir İstisna atmaya karar verdim. Eğer istisna olmazsa Owin'in bile başlamadığını anlayacağım. Benim tahminim haklıydı. Bazı sebeplerden dolayı Owin başlamıyordu ya da bir şey onu bastırıyordu. Benim durumumda, web.config dosyasındaki bu kötü yapılandırma ayarı vardı:

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

Sanırım ayarın adı oldukça açıklayıcı. Bunu kaldırın ya da false değerini true olarak değiştirin.


12
2018-02-11 12:54



Bu sadece beni ısırdı. Ayarı yıllar önce kendim eklemiş olmalıyım, SignalR ile oynadım ve bu ayarları tamamen unutmuşum. Teşekkürler! - Ole Tolshave
Web.config dosya değişikliği yaptı! Saçlarını harcayarak saatler geçirerek, burada değişen şeyleri değiştirerek. - DaveN
Benim için <add key = "owin: AppStartup" değeri = "AmbitionProjectBudgetTool.App_Start.IdentityConfig" /> Aynı sonuç, app.MapSignalR (); IdentityConfig yerine ve her şey çalıştı. - Antonio Nicolaas Teyken


IIS'yi yeni yüklediniz mi? Bu durumda, yeniden yüklemeniz gerekebilir:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

4
2018-01-08 14:52





Visual Studio geliştirme sunucusunu kullanarak kodumu çalıştırırken aynı sorunu yaşadım ve proje ayarlarımı IIS Yerel Web Sunucusu'nu kullanacak şekilde değiştirdiğimde çalıştı.

enter image description here

David Fowler'ın yorumladığı bu konuyla ilgili bir kusur vardı. Sorun gelecekteki sürümlerde düzeltilecek, ancak şu anda bu geçici bir çözüm. Şu anda hatanın bağlantısını bulamıyorum.


3
2017-12-31 18:16