2012-06-24 10 views
18

मैं एक एमवीसी 4 अनुप्रयोग में विजुअल स्टूडियो 2012 अल्टीमेट आरसी, सिग्नलआर 0.5.1 और jQuery 1.7.2 का उपयोग कर रहा हूं।

मैं पर ध्यान दिया है: MVC4 SignalR "signalr/hubs" 501 Not Implemented Error

लेकिन इससे मेरी समस्या को प्रभावित नहीं करता (मैं डिबग करने के लिए आईआईएस एक्सप्रेस उपयोग कर रहा हूँ)।

जब मैं सिग्नलआर का उपयोग करने का प्रयास करता हूं तो $। कनेक्शन कनेक्शन को अपरिभाषित किया जाता है। मेरे सर्वर साइड कोड:

[HubName("tenantHub")] 
public class TenantHub : Hub 
{ 
    ... 
    void TenantChange(CrudAction action, Tenant tenant) 
    { 
     Clients.eventOccurred(action.ToString(), tenant); 
    } 
} 

क्लाइंट साइड:

$(function() { var test = $.connection.tenantHub; }); 

क्लाइंट साइड SignalR/hubs संदर्भित किया जा रहा है और मैं जे एस कोड देख सकते हैं, यह किसी भी त्रुटि फेंक नहीं है। लेकिन $ .connection का संदर्भ Uncaught TypeError: Cannot read property 'tenantHub' of undefined फेंकता है। डिफ़ॉल्ट चैट उदाहरण करने का भी प्रयास किया, यह वही त्रुटि देता है। क्या VS2012 में उपयोग किए जाने पर सिग्नलआर असमर्थित है या क्या मैं सिर्फ बेवकूफ हूं?

+0

क्या आप सर्वर पर डिबग करने की कोशिश? कोई अपवाद? क्या आपने कनेक्शन शुरू किया था? '$ .connection.hub.start(); 'मैं बस इतना सोच सकता हूं :( –

+0

हां, मैंने यह कोशिश की है, लेकिन' कनेक्शन 'चर स्वयं ही अनिर्धारित है। – Bas

+0

मुझे लगता है कि समस्या स्थान से आती है .js फ़ाइल, क्या आपने 'jquery.signalR-0.5.1.min.js' और' सिग्नलर/हब्स 'इनपुट किया है? हो सकता है कि आपको' firebug' –

उत्तर

9

अपनी कक्षा से [HubName("tenantHub")] लेने का प्रयास करें। अगर मैं वहां पर था तो मेरा काम नहीं करेगा। अपनी परियोजना की जड़ पर अपने हब्स को "Hubs" नामक फ़ोल्डर में डालने का प्रयास करें।

25

ग्लोबल.एएसएक्स सीएस से हटाने का प्रयास करें, और देखें कि क्या इससे मदद मिलती है?

+12

यह मेरे लिए काम करता है! पता चला कि क्यों, एमवीसी 4 टेम्पलेट में आपकी लेआउट फ़ाइल के नीचे jQuery सही है (अप्रत्याशित, और बेवकूफ लगता है शीर्ष पर modernizr शामिल है)। तो मेरे पृष्ठ में jquery दो बार शामिल था जो सब कुछ खराब कर दिया। धन्यवाद Thiem :) – Rocklan

+0

जब मैं डिफ़ॉल्ट एमवीसी 4 टेम्पलेट का उपयोग करता था यह मेरे लिए बिल्कुल समस्या थी। धन्यवाद!! – cortijon

+0

असल में, यह मदद करता है, लेकिन ऐसा करने का सही तरीका स्क्रिप्ट अनुभागों में @ @ स्क्रिप्ट स्क्रिप्ट {} 'में आपकी अतिरिक्त स्क्रिप्ट शामिल करना है, यदि आप डिफ़ॉल्ट लेआउट का उपयोग करना चाहते हैं, या अपनी आवश्यकताओं के अनुरूप लेआउट को बदलें (स्क्रिप्ट्स शीर्ष, लेआउट में कोई jquery, आदि) –

3

मुझे वीएस2012 आरटीएम में एक ही समस्या थी।

समस्या यह थी कि मैंने पहली बार BundleConfig.cs में सिग्नलर जोड़ा और उम्मीद की कि यह केवल काम करे। लेकिन फिर ब्राउजर में 'व्यू सोर्स' का उपयोग करके मैंने देखा कि simr.js jquery.js से पहले शामिल किया गया था। सिग्नल.जेएस पृष्ठ के शीर्ष में शामिल किया गया था, पृष्ठ के नीचे jquery शामिल किया गया था।

कुछ के बाद bundleConfig सिग्नल.जेएस के साथ jquery.js के बाद शामिल किया गया था, और अब सिग्नल एक आकर्षण की तरह काम करता है!

2

Global.asax.cs

में Application_Start() पर पहले ही आइटम के रूप में RouteTable.Routes.MapHubs(); डालने की कोशिश मैं एक sample code/project here

5

यह हमें आमतौर पर कारण jQuery दो बार लोड हो रहा है की वजह से है। आमतौर पर हम पाद लेख में jQuery लोड करने की आदत में हैं। चूंकि सिग्नलर शिकायत करता है और आपको सिग्नल-x.js से पहले jQuery लाइब्रेरी को शामिल करने के लिए मजबूर करता है।

आप से पहले signalr-x.js jQuery शामिल कर सकते हैं और आप पाद लेख में कुछ इस तरह कर सकते हैं जहां आप इसे दो बार लोड हो रहा से बचने के लिए jQuery प्लगइन में शामिल हैं:

<script type="text/javascript"> 
    !window.jQuery && document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><\/script>'); 
    !window.jQuery && document.write('<script src="/public/js/vendor/jquery-1.9.1.min.js"><\/script>'); 
</script> 

आशा इस मदद करता है। :)

+0

दरअसल! बिग +1 :) (हालांकि मुझसे रूकी गलती ..) – army

0

मेरे पास एक समान समस्या थी, मेरा काम दृश्य स्टूडियो 2010 डीबग काम कर रहा था लेकिन स्थानीयहोस्ट (आईआईएस 7.5 विंडोज 7) पर नहीं। मैंने पाया कि "सिग्नल/हब्स" की परिभाषा में मेरा अतिरिक्त स्लैश था, मैं "/ सिग्नल/हब्स" का उपयोग कर रहा था। मैंने ब्राउजर संगतता के लिए जेएसओएन 2 जेएस संदर्भ भी जोड़ा। नोट करें .js घोषित करने का आदेश महत्वपूर्ण है।

<script src="Scripts/JSON2.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/jquery-1.8.2.min.js" type="text/javascript"></script> 
<script src="Scripts/jquery.signalR-1.1.2.min.js" type="text/javascript"></script> 
<script src="signalr/hubs" type="text/javascript"></script> 
<script type="text/javascript"> 

इस मुद्दे मैं इस प्रकार प्रवेश करने पर दिया और देव उपकरणों के कंसोल में देखा त्रुटि को देखने के लिए जब स्थानीय होस्ट पर तैनात खोजने के लिए।

// Logs errors to the browser dev 'f12' console 
$.connection.hub.logging = true; 

उम्मीद है कि यह किसी और की मदद करेगा। मैं अब क्रोम, आईई 9, 10 के साथ कई पीसी पर खेल रहा हूं - क्या एक महान पुस्तकालय है!

0

सुनिश्चित करें कि आपके पास डुप्लिकेट हब नाम नहीं है; [हबनाम ("किरायेदार हब")] - यह एक ही नाम से सजाए गए दो या दो से अधिक हब वर्ग हैं।

1

यदि आपके लिए इनमें से कोई भी काम नहीं है, तो सुनिश्चित करें कि आपके अंतिम HTML स्रोत में न केवल सिग्नलआर स्क्रिप्ट का संदर्भ jQuery के बाद दिखाई देता है, बल्कि यह भी कि संस्करण आपकी स्क्रिप्ट फ़ोल्डर में मौजूद वास्तविक फ़ाइल से मेल खाता है।

<script src="~/Scripts/jquery.signalR-2.0.2.js"></script> 

उदाहरण के लिए यह एक, SignalR की 2.0.2 संस्करण से मेल खाता है, तो आप पैकेज के माध्यम से SignalR उन्नयन तो आप मैन्युअल रूप से इस लाइन को संपादित करना होगा।

0

जॉन को रिवर्स में,

मैं signalr/केन्द्रों घोषणा

यानी करने के लिए एक जोड़ने के लिए/था।

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

बने

<script src="/signalr/hubs" type="text/javascript"></script> 
संबंधित मुद्दे