कृपया ध्यान दें कि मैं स्पष्ट रूप से सिग्नलआर 2.0 का संदर्भ दे रहा हूं ... मैंने सिग्नल 1.1/1.2 के साथ इसके लिए कुछ (गंदा) दृष्टिकोण देखा है ... लेकिन कोई भी नहीं 2.0 अभी तक।सिग्नलआर 2.0 जेसन सीरियलज़र को व्युत्पन्न प्रकार की वस्तुओं का समर्थन करने के लिए
क्या किसी को व्युत्पन्न प्रकारों को भेजने में सक्षम करने के लिए सिग्नलआर 2.0 डिफ़ॉल्ट जेसन सीरियलाइज़र को बदलने में कोई सफलता मिली है? सिग्नलआर 2.0 के बारे में मैंने जो पढ़ा है उसके आधार पर यह संभव होना चाहिए, हालांकि, मुझे कोई भाग्य नहीं है और कहीं भी एक पूर्ण उदाहरण नहीं मिला है।
यहाँ मैं कैसे शुरू कर दिया ... किसी भी मदद की सराहना की होगी।
मेरे Startup.cs
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// this should allow the json serializer to maintain the object structures
var serializer = new JsonSerializer()
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
};
// register it so that signalr can pick it up
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer),() => serializer);
app.MapSignalR();
}
}
}
हब
public void AddStock(Stock stock)
{
string stockType = stock.GetType().ToString();
Console.WriteLine("The type of stock we got was: " + stockType);
}
मेरे कंसोल परीक्षण ऐप पर विधि (इस केंद्र के लिए प्रकाशित करता है)
myDataHub.Invoke("AddStock", new NyseStock()
{
Company = "Microsoft",
NyseSymbol = "MSFT"
});
myDataHub.Invoke("AddStock", new DaxStock()
{
Company = "Microsoft",
DaxSymbol = "DMSFT"
});
बस अच्छा उपाय स्टॉक के लिए। सीएस
namespace Messages
{
public class Stock
{
public string Company
{
get;
set;
}
public decimal Price
{
get;
set;
}
}
public class NyseStock : Stock
{
public string NyseSymbol
{
get;
set;
}
}
public class DaxStock : Stock
{
public string DaxSymbol
{
get;
set;
}
}
}
मेरा पहला झुकाव यह था कि मैंने क्लाइंट में सीरिएलाइज़र स्थापित करने के लिए उपेक्षित किया। इसलिए मैं कनेक्शन के निर्माण के बाद लेकिन हब प्रॉक्सी के सृजन से पहले निम्नलिखित कहा:।
myConnection = new HubConnection("http://localhost:64041/");
// Update the serializer to use our custom one
myConnection.JsonSerializer = new JsonSerializer()
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
};
//Make proxy to hub based on hub name on server
myDataHub = myConnection.CreateHubProxy("DataHub");
हालांकि यह सिर्फ एक InvalidOperationException में हुई (डेटा क्योंकि कनेक्शन डिस्कनेक्ट किया गया अवस्था में है नहीं भेजा जा सकता शुरू कॉल किसी भी डेटा भेजने से पहले।) myDataHub.Invoke (..) invocations के दौरान।
क्या आपने कभी इसे समझ लिया था? मैं एक ही मुद्दे पर आ रहा हूँ। – chad
यहां वही समस्या है ... –