Domanda

Mi chiedevo come un progetto client in Visual Studio potesse fare riferimento a un servizio WCF che non ha un rilegatura MEX. Ogni volta che rimuovo l'associazione MEX predefinita in qualsiasi servizio WCF di esempio, le app client non riescono a trovare il servizio e nei commenti generati automaticamente, si consiglia di rimuovere l'ambiente di produzione. Quindi come dovrebbero le app client di trovare il servizio e fare riferimento?

È stato utile?

Soluzione

L'endpoint MEX è una parte necessaria dei servizi SOAP WCF. È ciò che consente ai toolkit del client di abbattere le classi di proxy WSDL e generare automaticamente. Come fai notare, senza di essa, i clienti non hanno modo di ottenere le informazioni per consumare il servizio. Se vuoi che i clienti possano consumare e trovare il tuo servizio, dovresti lasciarlo disponibile quando il tuo servizio è in produzione.

Altri suggerimenti

Se hai accesso agli assemblaggi che contengono i tipi che definiscono il contratto di servizio, le operazioni e i contratti di dati, è possibile creare un proxy al volo utilizzando ChannelFactory. In questo caso non dovresti recuperare alcun metadati di servizio poiché hai già accesso a tutte le informazioni necessarie per chiamare il servizio.

Per esempio

// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();

// Create data contract
var requestDataContract = new MyDataContract();

// Call service operation.
var responseDataContract = proxy.MyServiceOperation(requestDataContract);

Aiuta anche se si ha accesso al file di configurazione sul lato del servizio in modo da poter copiare i dettagli endpoint da lì nella configurazione client.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top