Windows evrensel uygulamasında çift taraflı sözleşmeli wcf hizmetini nasıl kullanabilirim? (; 10240 Yapı 10.0) o API desteklenmektedir msdn göreWindows Evrensel Uygulaması'nda dupleks wcf hizmeti nasıl kullanılır?
, Windows 10 hedefleyen Windows Evrensel Uygulaması'nda dubleks wcf hizmeti tüketmeye çalışırken
Ben PlatformNotSupportedExcetpion: Operation is not supported on this platform.
çalışma zamanı özel alıyorum.
Bu mümkün değilse, senaryona nasıl devam etmeliyim? Aynı makinede iki uygulama (konsol ve windows universal xaml uygulaması) var ve iki yönlü iletişime ihtiyacım var.
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();
hizmet sözleşmesi: Ben hem ChannelFactory denenmiş ve Servis Referans ekle tarafından istemci WCF yarattı
[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
[OperationContract(IsOneWay = true)]
void Initialize();
}
public interface IMyServiceCallback
{
[OperationContract(IsOneWay = true)]
void OnFrame(int i);
}
Hizmetin konukçu yaratmak olduğunu, klasik .net 4.6 konsol uygulaması var iletişim kutusu ve UWP uygulamasında hem NetHttpBinding
hem de NetTcpBinding
.
wcf istemcisinin örneğini oluşturmaya çalıştığımda, PlatformNotSupportedExcetpion'u atar.
Kaynak: 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()
Bir dubleks 'net.tcp' WCF hizmetine bağlanmak için mükemmel bir şekilde çalışan bir UWP istemci uygulamasına sahibim. Projeyi Windows10'a geçtikten sonra sıfırdan yeniden oluşturdum ve şimdi aynısını 'PlatformNotSupportedException' alıyorum. – jsanalytics
Bu özel çözümde 23 projem var. Hepsi yeni oluşturulmuş UWP projesi haricinde, "AnyCPU" platformunu kullanmaktadır, sadece x86 veya x64 platformlarını kabul eder/izin verir, ancak AnyCPU'yu kabul etmez. Yani sanırım sorun şu andan geliyor. Ben el ile .... AnyCPU ekleyerek proje dosyaları ile uğraşmaya çalıştı .... ama iyi gitmedi, elbette. Ve yine, bu Windows 8.1 altında hiçbir sorun ile çalışmak için kullanılır. UWP proje şablonuyla veya bu tür bir şeyle ilgili bir sorun olabilir. – jsanalytics
Başka bir konudaki biri bunu not etti. CallbackContract özniteliğini kaldırdıktan sonra UWP istemcisi bir bağlantı oluşturabilir, bu nedenle temel WCF çalışır. Daha sonra bir UWP –