2015-10-15 6 views
6

मैं विंडोज सार्वभौमिक ऐप में डुप्लेक्स अनुबंध के साथ डब्ल्यूसीएफ सेवा का उपभोग कैसे कर सकता हूं? (; बिल्ड 10240 10,0)विंडोज यूनिवर्सल ऐप में डुप्लेक्स डब्ल्यूसीएफ सेवा का उपभोग कैसे करें

msdn यह एपीआई समर्थित है मुताबिक

मैं जब Windows 10 को लक्षित, विंडोज युनिवर्सल ऐप्लिकेशन में द्वैध WCF सेवा का उपभोग करने की कोशिश कर PlatformNotSupportedExcetpion: Operation is not supported on this platform. क्रम अपवाद हो रही है।

यदि यह संभव नहीं है, तो मुझे अपने परिदृश्य में कैसे आगे बढ़ना चाहिए? मेरे पास एक ही मशीन पर चलने वाले दो एप्लिकेशन (कंसोल और विंडोज सार्वभौमिक xaml ऐप) हैं और मुझे दो-तरफा संचार की आवश्यकता है।

var host = new ServiceHost(typeof(MyService), new Uri("net.tcp://localhost:8008/MyService")); 

var binding = new NetTcpBinding(); //I've also tried net http binding 
binding.Security.Mode = SecurityMode.None; 

host.Description.Behaviors.Add(new ServiceMetadataBehavior()); 
host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, 
         MetadataExchangeBindings.CreateMexTcpBinding(), 
         "mex"); 

host.AddServiceEndpoint(typeof(IMyService), binding, ""); 
host.Open(); 

सेवा अनुबंध:

[ServiceContract(CallbackContract = typeof(IMyServiceCallback))] 
public interface IMyService 
{ 
    [OperationContract(IsOneWay = true)] 
    void Initialize(); 
} 

public interface IMyServiceCallback 
{ 
    [OperationContract(IsOneWay = true)] 
    void OnFrame(int i); 
} 

मैं दोनों, ChannelFactory की कोशिश की और सेवा संदर्भ द्वारा जोड़े ग्राहक WCF जेनरेट किया है

मुझे लगता है कि सेवा मेजबान बनाने क्लासिक .net 4.6 सांत्वना अनुप्रयोग है, यूडब्ल्यूपी ऐप में संवाद और NetHttpBinding और NetTcpBinding दोनों।

जब मैं wcf क्लाइंट का उदाहरण बनाने का प्रयास करता हूं, तो यह PlatformNotSupportedExcetpion फेंकता है।

स्रोत: System.Private.ServiceModel

StackTrace:

at System.ServiceModel.ReflectionExtensions.GetInterfaceMap(Type type, Type interfaceType) 
    at System.ServiceModel.Description.TypeLoader.GetIOperationBehaviorAttributesFromType(OperationDescription opDesc, Type targetIface, Type implType) 
    at System.ServiceModel.Description.TypeLoader.<>c__DisplayClass8.<AddBehaviorsFromImplementationType>b__10(Type currentType, KeyedByTypeCollection`1 behaviors) 
    at System.ServiceModel.Description.TypeLoader.AddBehaviorsAtOneScope[IBehavior,TBehaviorCollection](Type type, TBehaviorCollection descriptionBehaviors, ServiceInheritanceCallback`2 callback) 
    at System.ServiceModel.Description.TypeLoader.AddBehaviorsFromImplementationType(ServiceEndpoint serviceEndpoint, Type implementationType) 
    at System.ServiceModel.ChannelFactory`1.ReflectOnCallbackInstance(ServiceEndpoint endpoint) 
    at System.ServiceModel.ChannelFactory`1.CreateDescription() 
    at System.ServiceModel.ChannelFactory.InitializeEndpoint(Binding binding, EndpointAddress address) 
    at System.ServiceModel.DuplexChannelFactory`1..ctor(Object callbackObject, Binding binding, EndpointAddress remoteAddress) 
    at System.ServiceModel.ClientBase`1..ctor(InstanceContext callbackInstance, Binding binding, EndpointAddress remoteAddress) 
    at System.ServiceModel.DuplexClientBase`1..ctor(InstanceContext callbackInstance, Binding binding, EndpointAddress remoteAddress) 
    at App1.ServiceReference1.MyServiceClientBase..ctor(InstanceContext callbackInstance) 
    at App1.ServiceReference1.MyServiceClient..ctor(MyServiceClientCallback callbackImpl) 
    at App1.ServiceReference1.MyServiceClient..ctor() 
    at App1.MainPage.<button_Click>d__1.MoveNext() 
+0

मेरे पास एक यूडब्ल्यूपी क्लाइंट ऐप है जो डुप्लेक्स 'net.tcp' डब्ल्यूसीएफ सेवा से पूरी तरह से कनेक्ट करने के लिए उपयोग किया जाता है। मैंने विंडोज 10 में माइग्रेट करने के बाद प्रोजेक्ट को स्क्रैच से फिर से बनाया है और अब मुझे वही 'PlatformNotSupportedException' मिलता है। – jsanalytics

+0

मेरे पास इस विशेष समाधान के भीतर 23 परियोजनाएं हैं। नव निर्मित यूडब्लूपी परियोजना को छोड़कर, उनमें से सभी 'AnyCPU' प्लेटफॉर्म का उपयोग करते हैं, जो केवल' x86' या ​​'x64' प्लेटफ़ॉर्म स्वीकार करता है/अनुमति देता है, लेकिन 'AnyCPU' नहीं। तो, मुझे लगता है कि वह समस्या है जहां से समस्या आ रही है। मैंने 'AnyCPU' मैन्युअल रूप से जोड़ने वाली परियोजना फ़ाइलों के साथ गड़बड़ करने की कोशिश की .... लेकिन यह बिल्कुल ठीक नहीं हुआ। और फिर, यह विंडोज 8.1 के तहत कोई समस्या नहीं के साथ काम करता था। UWP प्रोजेक्ट टेम्पलेट या उस प्रकृति के कुछ के साथ कुछ समस्या हो सकती है। – jsanalytics

+0

किसी अन्य धागे में किसी ने नोट किया कि। CallbackContract विशेषता को हटाने के बाद UWP क्लाइंट कनेक्शन बना सकता है, इसलिए मूल WCF काम करता है। फिर वह एक यूडब्ल्यूपी –

उत्तर

0

द्वैध परिदृश्य 10580 निर्माण (नवीनतम .NETCore v5.1.0) में भी समर्थित नहीं है।

डब्ल्यूसीएफ डुप्लेक्स कार्यान्वयन में प्रतिबिंब के गलत उपयोग के बारे में आयन गिटहब की एक बग की सूचना मिली। यह बग .NET कोर के नवीनतम निर्माण में तय किया गया था और आप Nuget गैलरी से individual package शामिल कर सकते हैं। हालांकि, इस पैकेज के लिए आपको सिस्टम के प्रीरलीज़ संस्करणों को शामिल करने की आवश्यकता है। रनटाइम और सिस्टम। थ्रेडिंग।

enter image description here

आशा है कि यह मदद करता है, नेट कोर 1.0 के हिस्से के रूप WCF का

4

स्थिर संस्करणों अभी पिछले महीने जारी किया गया था। डुप्लेक्स और कई अन्य WCF features अब यूडब्ल्यूपी प्रोजेक्ट की project.json फ़ाइल में Microsoft.NETCore.UniversalWindowsPlatform पैकेज के 5.2.2 संस्करण का संदर्भ देकर विंडोज यूनिवर्सल ऐप्स में समर्थित हो सकते हैं।

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