È possibile chiamare un servizio WCF da un'applicazione universale?Client WCF in un'app universale
Ho aggiunto un riferimento al servizio e il proxy è stato generato correttamente. Ma quando si crea un NetTcpBinding a livello di codice e lo si passa al costruttore del proxy, il modello di servizio genera l'eccezione PlatformNotSupported.
Entrambe l'esecuzione dell'applicazione nel simulatore e sul computer locale genera la stessa eccezione.
Un'eccezione di tipo 'System.PlatformNotSupportedException' avvenuta in System.Private.ServiceModel.dll ma non era gestito in codice utente
"questa operazione non è supportato"
EndpointAddress address = new EndpointAddress("net.tcp://test:9000/ServicesHost/PublishService");
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
PublishingService.PublishClient proxy = new PublishingService.PublishClient(binding, address);
Qualcuno ha un esempio di un client WCF funzionante in un UAP?
EDIT
Ha qualcosa a che fare con il servizio essendo un servizio duplex!
Il contratto originale:
[ServiceContract(CallbackContract = typeof(IPublishCallback))]
public interface IPublish { }
Dopo aver rimosso il CallbackContract attributo il cliente UAP in grado di creare una connessione, così fondamentale WCF funziona. Quindi immagino sia meglio riformulare la domanda. È possibile creare un client duplex in un'applicazione universale?
modificare ServiceModel per l'host
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="netTcpPublishService" openTimeout="00:00:10" receiveTimeout="infinite">
<reliableSession inactivityTimeout="24.20:31:23.6470000" enabled="true" />
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehaviour">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="serviceBehaviour" name="PublishService.Publish">
<endpoint binding="mexHttpBinding" name="mexPublishService"
contract="IMetadataExchange" />
<endpoint address="PublishService" binding="netTcpBinding" bindingConfiguration="netTcpPublishService"
name="netTcpPublishService" contract="PublishService.IPublish" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8004/ServicesHost/PublishService" />
<add baseAddress="net.tcp://localhost:9004/ServicesHost/PublishService" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
Dovrebbe essere possibile, l'ho fatto nella mia applicazione (anche se senza passare nulla al costruttore proxy, quindi potrebbe non essere applicabile). – Tobbe
si trova in un'app UWP di Windows 10? –