मैं विंडोज सार्वभौमिक ऐप में डुप्लेक्स अनुबंध के साथ डब्ल्यूसीएफ सेवा का उपभोग कैसे कर सकता हूं? (; बिल्ड 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()
मेरे पास एक यूडब्ल्यूपी क्लाइंट ऐप है जो डुप्लेक्स 'net.tcp' डब्ल्यूसीएफ सेवा से पूरी तरह से कनेक्ट करने के लिए उपयोग किया जाता है। मैंने विंडोज 10 में माइग्रेट करने के बाद प्रोजेक्ट को स्क्रैच से फिर से बनाया है और अब मुझे वही 'PlatformNotSupportedException' मिलता है। – jsanalytics
मेरे पास इस विशेष समाधान के भीतर 23 परियोजनाएं हैं। नव निर्मित यूडब्लूपी परियोजना को छोड़कर, उनमें से सभी 'AnyCPU' प्लेटफॉर्म का उपयोग करते हैं, जो केवल' x86' या 'x64' प्लेटफ़ॉर्म स्वीकार करता है/अनुमति देता है, लेकिन 'AnyCPU' नहीं। तो, मुझे लगता है कि वह समस्या है जहां से समस्या आ रही है। मैंने 'AnyCPU' मैन्युअल रूप से जोड़ने वाली परियोजना फ़ाइलों के साथ गड़बड़ करने की कोशिश की .... लेकिन यह बिल्कुल ठीक नहीं हुआ। और फिर, यह विंडोज 8.1 के तहत कोई समस्या नहीं के साथ काम करता था। UWP प्रोजेक्ट टेम्पलेट या उस प्रकृति के कुछ के साथ कुछ समस्या हो सकती है। – jsanalytics
किसी अन्य धागे में किसी ने नोट किया कि। CallbackContract विशेषता को हटाने के बाद UWP क्लाइंट कनेक्शन बना सकता है, इसलिए मूल WCF काम करता है। फिर वह एक यूडब्ल्यूपी –