सवाल सिग्नलआर "सिग्नलर / हब्स" 404 त्रुटि दे रहा है


मैं अपनी परियोजना में सिग्नलआर (https://github.com/SignalR/SignalR) का उपयोग कर रहा हूं। यहां से https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs मुझे विचार है कि हब्स का उपयोग कैसे करें। लेकिन "सिग्नल / हब्स" स्क्रिप्ट 404 त्रुटि दे रही है। यहां यूआरएल है जो व्यू स्रोत में बन जाता है: http: // localhost: 50,378 / signalr / केन्द्रों 404 त्रुटि दे रहा है

मेरा कोड यहाँ है: हब:

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


मूल


क्या आप स्रोत या पैकेज का उपयोग कर रहे हैं? मैं पैकेज का उपयोग करने की सलाह देता हूं क्योंकि स्रोत इस बिंदु पर पूरी तरह से स्थिर नहीं हैं। - davidfowl
इसके अलावा, आप किस वेबसर्वर का उपयोग कर रहे हैं? - davidfowl


जवाब:


यह हो सकता है कि आपने कोई संदर्भ नहीं जोड़ा है SignalR.AspNet.dll। अगर मुझे सही याद है तो यह मार्ग जोड़ने के लिए ज़िम्मेदार है /signalr/hubs


27
2018-01-20 14:09



क्या इस असेंबली / पुस्तकालय का नाम बदलकर SignalR.Hosting.AspNet.dll कर दिया गया है? मैंने Nuget पैकेज का उपयोग किया है और मुझे SignalR.AspNet.dll नामक कोई भी स्रोत दिखाई नहीं देता है - Dave Lawrence
मुझे लगता है कि अब मैं माइक्रोसॉफ्ट.एस्पनेट .ignalR.SystemWeb.dll - André Pena
@ आंद्रेपेना हाँ ... यह यहाँ है nuget.org/packages/Microsoft.AspNet.SignalR.SystemWeb मैंने अप्रयुक्त हटा दिया DLLRSharper का उपयोग करके प्रोजेक्ट से यह पता लगाने के लिए कि यह डीएलएल केवल रनटाइम के दौरान उपयोग किया जाता है। आउच! - Leniel Maccaferri


यदि आप एमवीसी 4 का उपयोग करते हैं तो Global.asax.cs में RouteConfig.RegisterRoutes (RouteTable.Routes) से पहले RouteTable.Routes.MapHubs () को कॉल करने का प्रयास करें। यह मेरे लिए काम करता है।

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

43
2018-03-15 01:02



मुझे संसाधन मिल गए हैं जो रूटकॉन्फिग, वेबएपी कॉन्फिग, और फ़िल्टरकॉन्फिग रजिस्ट्रीज जोड़ने में मदद कर सकते हैं, लेकिन मुझे इनमें से किसी भी संदर्भ में जोड़ने के लिए संसाधन नहीं मिल रहा है। इन्हें शामिल करने के लिए मुझे क्या संदर्भ देना चाहिए? - BTC
हाँ यह मेरे लिए तय है। धन्यवाद - John Mc
क्योंकि आपको एमवीसी के साथ रूट टेबल पंजीकृत करने से पहले रूट टेबल पर हब जोड़ने की आवश्यकता है। - Adamy
"पहले" महत्वपूर्ण है! - theDmi
RouteTable.Routes.MapHubs(); अब अप्रचलित है। app.MapSignalR(); ए पर बुलाया जाना चाहिए IAppBuilder ओविन स्टार्टअप कक्षा के अंदर। - Jim Aho


वहाँ से सिग्नल 1.0.0 आरसी 2 पैकेज फ़ोल्डर में एक रीडमी है जो कहता है कि हब्स रूट मैन्युअल रूप से स्थापित होना चाहिए। :) यहाँ एक स्निपेट है ...

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



यह अब अप्रचलित है और जरूरी नहीं है - देखें asp.net/signalr/overview/releases/... - Simon_Weaver


मेरे मामले में, इस 404 का मुख्य कारण हब्स ठीक से मैप नहीं किया गया था। RouteTable.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();
        }
    }
}

12
2018-02-12 11:45





मैंने इस समस्या से भी संघर्ष किया है और आखिरकार उस बिंदु पर पहुंचा जो समस्या पैदा कर रहा था। सबसे पहले, मुझे यह कहना है कि सिग्नल वी 2 कॉलिंग के साथRouteTable.Routes.MapHubs(); ग्लोबलसैक्स / एप्लिकेशन_स्टार्ट के अंदर अप्रचलित और कंपाइलर भी चेतावनी फेंकता है। इसके बजाए अब हम निम्नलिखित सार्वजनिक विधि के साथ एक समर्पित स्टार्टअप क्लास जोड़ते हैं:

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

सभी विन्यास यहाँ जाता है। देखो प्रलेखन अधिक जानकारी के लिए।

अब, पागल की तरह गुगलने के कई घंटों बर्बाद करने के बाद मैंने पहले उल्लेख किए गए स्टार्टअप क्लास की कॉन्फ़िगर विधि के अंदर एक अपवाद फेंकने का फैसला किया। अगर कोई अपवाद नहीं फेंक दिया जाएगा तो मैं समझूंगा कि ओविन भी शुरू नहीं होता है। मेरा अनुमान सही था। किसी कारण से ओविन शुरू नहीं हो रहा था या कुछ इसे दबा रहा था। मेरे मामले में यह मेरी web.config फ़ाइल में यह बुरा कॉन्फ़िगरेशन सेटिंग थी:

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

मुझे लगता है कि सेटिंग का नाम बहुत वर्णनात्मक है। या तो इसे हटा दें या गलत में गलत बदलें।


12
2018-02-11 12:54



यह सिर्फ मुझे थोड़ा सा। सिग्नलआर के साथ खेलते समय मैंने खुद को सेटिंग जोड़नी होगी और पूरी तरह से इस सेटिंग्स के बारे में भूल गए होंगे। धन्यवाद! - Ole Tolshave
Web.config फ़ाइल परिवर्तन ने किया था! इस पर खींचने वाले बालों के घंटों के घंटों, यहां चीजें बदलना, वहां बदलना। - DaveN
मेरे लिए यह <add key = "owin: AppStartup" value = "AmbitionProjectBudgetTool.App_Start.IdentityConfig" /> वही परिणाम, जोड़ा गया app.MapSignalR (); इसके बजाय पहचान कॉन्फिग और सब कुछ काम किया। - Antonio Nicolaas Teyken


क्या आपने अभी आईआईएस स्थापित किया है? इस मामले में आपको इसे पुनः स्थापित करना पड़ सकता है:

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

4
2018-01-08 14:52





विजुअल स्टूडियो डेवलपमेंट सर्वर का उपयोग करके मेरा कोड चलाते समय मुझे यह वही समस्या थी और जब मैंने अपनी परियोजना सेटिंग्स को आईआईएस लोकल वेब सर्वर का उपयोग करने के लिए बदल दिया तो यह काम करता था।

enter image description here

डेविड फाउलर ने टिप्पणी की कि इस मुद्दे के खिलाफ एक दोष उठाया गया था। भविष्य में रिलीज में समस्या तय की जाएगी लेकिन अभी यह कामकाज है। मैं इस समय बग के लिंक को नहीं ढूंढ सकता।


3
2017-12-31 18:16





आपको जावास्क्रिप्ट फ़ाइल को संदर्भित करने की आवश्यकता है @Url.Content, मानते हैं कि आप ASP.NET MVC3 का उपयोग कर रहे हैं

पसंद:

<script src="@Url.Content("~/Scripts/jquery.signalR.min.js")" type="text/javascript"></script>

देखें गिटहब पर सिग्नलआर एफएक्यू

संपादित करें: ट्रेवर डी कोएकोकोक ने अपनी टिप्पणी में उल्लेख किया है, आपको जोड़ने की जरूरत नहीं है @Url.Content स्वयं अगर आप एमवीसी 4 या बाद में उपयोग कर रहे हैं। बस यूरी के साथ प्रीपेडिंग ~/ पर्याप्त होता। अधिक जानकारी के लिए, देखें यह अन्य SO सवाल है


3
2018-01-27 10:32



यह केवल एमवीसी 3 या इससे पहले लागू होता है। Url.Content MVC4 में और बाद में "~ /" के साथ स्वचालित है। - Trevor de Koekkoek


लंबी कहानी छोटी: मेरे मामले में मैंने इस्तेमाल किया आर # (रीशेपर), मेरे प्रोजेक्ट पर राइट क्लिक किया जो सिग्नलआर का उपयोग करता है और रिफैक्टर => अप्रयुक्त संदर्भों को हटाता है। देखें: यह एक है पैर में गोली मारो। : डी

इसने महत्वपूर्ण डीएलएल संदर्भों को हटा दिया SignalR जिनका उपयोग केवल रनटाइम के दौरान किया जाता है, यानी, वे संकलन समय के दौरान आवश्यक नहीं हैं। जाहिर है आर # केवल संकलन समय निर्भरताओं के लिए जांचता है।

अर्थात् इन 2 संदर्भ गायब थे:

  1. Microsoft.AspNet.SignalR.SystemWeb
  2. माइक्रोसॉफ्ट.ऑविन.होस्ट.सिस्टमवेब (इस के बिना एक ब्रेकपॉइंट SignalR ओविन कॉन्फ़िगरेशन विधि भी हिट नहीं होगी)।

NuGet संकुल को हटा दिया और फिर उन्हें पुनर्स्थापित किया। फिक्स्ड /hubs 404 अंक


3
2018-05-23 16:00



हाँ!!! मैंने एक रनटाइम डीएलएल हटा दिया था! धन्यवाद - Murphybro2


यह सिग्नलआर विकी से एक पूर्ण उत्तर है (https://github.com/SignalR/SignalR/wiki/Faq)। यह मेरे साथ काम किया:

सबसे पहले, सुनिश्चित करें कि आपके पास Global.asax में MapHubs () पर कॉल है।

कृपया सुनिश्चित करें कि हब मार्ग आपके आवेदन के किसी भी अन्य मार्ग से पहले पंजीकृत है।

RouteTable.Routes.MapHubs();

एएसपी.नेट एमवीसी 4 में आप निम्न कार्य कर सकते हैं:

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

यदि आप एक एमवीसी 3 एप्लीकेशन लिख रहे हैं, तो सुनिश्चित करें कि आप अपनी स्क्रिप्ट संदर्भों के लिए Url.Content का उपयोग कर रहे हैं:

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

यदि आप अपने स्क्रिप्ट संदर्भों के लिए एक नियमित ASP.NET अनुप्रयोग का उपयोग ResolveClientUrl लिख रहे हैं:

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

यदि उपर्युक्त अभी भी काम नहीं करता है, तो सुनिश्चित करें कि आपके पास अपने web.config में RAMMFAR सेट है:

<configuration>
   <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
        </modules>
    </system.webServer>
</configuration>

2
2018-05-18 15:59