2013-08-12 16 views
5

की संपत्ति 'क्लाइंट' प्राप्त करने में असमर्थ मुझे मौजूदा वेब एप्लिकेशन में सिग्नलआर का उपयोग करने में समस्याएं आ रही हैं। मुझे javaruntime अपवाद प्राप्त हो रहा है "अपरिभाषित या शून्य संदर्भ का गुण 'क्लाइंट' प्राप्त करने में असमर्थ" क्योंकि जब मैं $ .conction ऑब्जेक्ट से अपना हब पुनर्प्राप्त करने का प्रयास करता हूं, तो यह शून्य हो रहा है।सिग्नलआर - अपरिभाषित या शून्य संदर्भ

मेरे कोड को पोस्ट करने से पहले, मैं कुछ पृष्ठभूमि और कुछ चीजों की आपूर्ति करना चाहता था जो मैंने पहले ही कोशिश की है: - यदि मैं स्थानीय रूप से प्रोजेक्ट चलाता हूं, तो सब कुछ ठीक काम करता है। यह केवल तब होता है जब मैं अपनी परियोजना को आईआईएस स्थान पर तैनात करता हूं जिसमें मुझे समस्याएं होती हैं। - मैंने सत्यापित किया है कि मेरा हब नाम सही ढंग से ऊंट काट रहा है। दोबारा, यह स्थानीय रूप से ठीक काम करता है, और आईआईएस में परियोजना को तैनात करने के बाद ही त्रुटि फेंकता है। - मैंने पुष्टि की है कि मेरी सभी जावास्क्रिप्ट सफलतापूर्वक लोड हो गई है। JQuery लाइब्रेरी केवल एक बार संदर्भित है, और ठीक लोड करता है। तो सिग्नलआर जावास्क्रिप्ट, और गतिशील रूप से निर्मित सिग्नल/हब्स करता है। - यदि मैं एक नई प्रोजेक्ट बनाता हूं, और मौजूदा वेब एप्लिकेशन के तहत एक वेब ऐप के रूप में चल रहे एक नए वेब एप्लिकेशन के समान कोड चलाता हूं, तो सब ठीक काम करता है (एक ही कोड का उपयोग किया जा रहा है, बस एक नई परियोजना में)।

किसी के पास कोई समस्या है कि समस्या क्या है?

हब कोड:

Imports Microsoft.AspNet.SignalR 

Public Class TestHub 
    Inherits Hub 

    Public Sub Connect() 
     Try 
      Clients.Caller.onConnect(Context.ConnectionId) 
     Catch ex As Exception 
      LogMessage("ERROR Connecting to Hub", 0, 0, "ERROR") 
     End Try 
    End Sub 

End Class 

वेब पेज कोड:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.6.4.min.js"></script> 
    <!--Reference the SignalR library. --> 
    <script src="Scripts/jquery.signalR-1.1.3.js"></script> 
    <!--Reference the autogenerated SignalR hub script. --> 
    <script src="signalr/hubs"></script> 
    <script type="text/javascript"> 
     $(function() { 
      // Declare a proxy to reference the hub. 
      var thub = $.connection.testHub; 

      registerClientMethods(thub); 

      // Start Hub 
      $.connection.hub.start().done(function() { 
       registerEvents(thub); 
       thub.server.connect(); 
       alert('connected!'); 
      }); 
     }); 


     function registerClientMethods(thub) { 
      thub.client.onConnect = function (id) { 
       $('#lblConnectionID').text(id); 
      } 
     } 

     function registerEvents() { 

     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Label ID="lblConnectionID" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

Global.asax कोड:

Imports System.Web.Routing 
Imports Microsoft.AspNet.SignalR 

Public Class Global_asax 
    Inherits System.Web.HttpApplication 
    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 
    ' Fires when the application is started 
    Try 
    ' Register the default hubs route: ~/signalr/hubs 
    RouteTable.Routes.MapHubs() 
    Catch ex As Exception 
    LogMessage("ERROR initializing SignalR: " & ex.Message, 0, 0, "ERROR") 
    End Try 
End Sub 
... 

तो अब, जब मैं अपने पेज SignalRTest.aspx करने के लिए जाना , लाइन thub.client.on कनेक्ट किया गया = ... एक जाव फेंकता है एस्क्रिप्ट त्रुटि: "अपरिभाषित या शून्य संदर्भ के गुण 'क्लाइंट' प्राप्त करने में असमर्थ"

क्या कोई जानता है कि इसका कारण क्या हो सकता है? धन्यवाद।

proxies.testHub= this.createHubProxy('testHub'); 
    proxies.testHub.client = { }; 
    proxies.testHub.server = { 
     connect: function() { 
      return proxies.transactionHub.invoke.apply(proxies.testHub, $.merge(["Connect"], $.makeArray(arguments))); 
     } 
    }; 

क्यों इस में शामिल नहीं किया जाएगा पर कोई विचार: -

[संपादित करें] गैर काम फ़ाइल के साथ काम करने signalr/hubs.js फ़ाइल की तुलना के बाद, मैं निम्नलिखित भाग लापता पाया सिग्नलर/hubs.js फ़ाइल? मैं ग्लोबल.एएसएक्स में MapHubs() को कॉल कर रहा हूं ...

धन्यवाद!

[FIX] मैंने अपने गंतव्य वेब एप्लिकेशन के बिन फ़ोल्डर को हटा दिया, और फिर से तैनात किया गया। अभी भी सुनिश्चित नहीं है कि क्या अलग था। सभी डीएलएल समान हैं। यह अब काम करता है। अजीब।

+0

यह मुश्किल है, आप सेटअप कि आईआईएस पर काम करता है और एक कि नहीं करता है के बीच विरोधाभास पर विस्तृत कर सकते हैं। आपने कहा, "मौजूदा वेब एप्लिकेशन के तहत एक वेब ऐप के रूप में चल रहे एक नए वेब एप्लिकेशन के रूप में, सब कुछ ठीक काम करता है"। यह आईआईएस पर सेटअप से अलग कैसे है कि सिग्नलआर विफल रहता है? –

+0

निश्चित रूप से, मैं कोशिश कर सकता हूं ... आईआईएस में, मेरे पास "MyWebAplication" नामक एक वेब एप्लिकेशन है। यह एक बड़ा और जटिल वेब अनुप्रयोग है जो थोड़ी देर के लिए आसपास रहा है। मैं http://mycompany.com/mytest/signalrtest.aspx पर जाकर अपने परीक्षण पृष्ठ पर जाता हूं। किसी कारण से, इस परियोजना में मेरा हब प्रॉक्सी नहीं बनाया जा रहा है। यदि मैं एक नया विजुअल स्टूडियो प्रोजेक्ट बनाता हूं, और इसे mytest2 कहता हूं जिसमें केवल सिग्नल कोड (हब और क्लाइंट पेज) होता है, तो मैं आईआईएस में अपने मुख्य एप्लिकेशन के तहत प्रोजेक्ट को एप के रूप में तैनात करता हूं (इसलिए अब मैं http: // mycompany पर जाता हूं .com/mytest/mychildtest/signalrtest.aspx)। अब मेरा हब प्रॉक्सी ठीक से उत्पन्न करता है – user2676522

+0

शायद "MyWebAplication" में कुछ सुरक्षा सेटिंग्स हैं जो कुछ आवश्यक एएसपी.NET पुस्तकालयों को लॉक कर चुके हैं सिग्नल को सही तरीके से काम करने की आवश्यकता है। क्या आपके पास एल्मा या एंटरप्राइज़ लाइब्रेरी जैसी जगह पर कोई लॉगिंग लॉगिंग है? क्या आपने बस विंडोज़ एप्लिकेशन इवेंट लॉग की जांच की है? –

उत्तर

4

वीएस 2012 से आईआईएस 7.5 तक प्रकाशित करने के बाद वेब एप्लिकेशन चलाने के लिए डीबग करने का प्रयास करते समय मुझे यह त्रुटि आई। कुछ बालों को खींचने के बाद, मुझे एहसास हुआ कि समस्या यह थी कि मैंने तैनाती करते समय jquery स्क्रिप्ट और सिग्नल पथ को नहीं बदला।

समस्या को हल करने के लिए मुझे वर्चुअल निर्देशिका नाम ("परीक्षण कैट") को jquery और सिग्नलर के लिए स्क्रिप्ट टैग के पथ में जोड़ना पड़ा।

उदा।इस से:

<script src="Scripts/jquery-1.8.2.min.js" ></script> 
<script src="/signalr/hubs"></script> 

करने के लिए

<script src="/TestingChat/Scripts/jquery-1.8.2.min.js" ></script> 
<script src="TestingChat/signalr/hubs"></script> 
+1

मेरी समस्या भी - स्थानीयहोस्ट पर प्रोजेक्ट चलाने के लिए अर्हता प्राप्त करने के लिए मुझे SSED

+1

@SSED - +1 - मेरे लिए समान रूप से संदर्भ बदलना पड़ा लेकिन मैं इसे आसानी से आसान पाया: David

संबंधित मुद्दे