newbie WCF qui ... Sto tentando di auto-ospitare un servizio WCF usando NetTcpBinding. Sulla base del MSDN "how-to" tutorial Ho fatto tutto il legame nel codice, che ho poi cambiato da WsHttpBinding a NetTcpBinding, e ora si presenta così:Puoi fare NetTcpBinding nel codice? Dovresti?
var baseAddress = new Uri("net.tcp://localhost:8000/MyWebService");
var selfHost = new ServiceHost(typeof(ConcreteWebService), baseAddress);
try {
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
selfHost.AddServiceEndpoint(typeof(IWebService), binding, "TRWebService");
selfHost.Open();
Console.WriteLine("The service is ready at {0}", baseAddress.AbsoluteUri);
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
} catch (CommunicationException ce) {
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();
}
La cosa è, il tutorial poi dice che dovete correre a svcutil.exe generare un proxy per il client ... ma da quando sono passato a NetTcpBinding, svcutil non funziona più - non riesce a rilevare il mio servizio. Ho cercato su Google il problema e ho scoperto che ogni singolo esempio di NetTcpBinding esegue l'installazione nel file app.config, non nel codice, e tutti aggiungono un endpoint chiamato "Mex", con tipo vincolante di "mexTcpBinding". Non sembra esserci alcun equivalente di questo nel codice.
Quindi, devo modificare il mio progetto per utilizzare app.config e abbandonare l'approccio basato sul codice? Qualcuno può spiegarmi cos'è Mex, perché ne ho bisogno e perché (apparentemente) non può essere chiamato in codice - o se può, come, o perché è scoraggiato? In generale, quando è meglio usare app.config e quando il codice per i servizi WCF?
Stavo seguendo esattamente lo stesso tutorial e volevo i contratti di callback, quindi dopo essere passato a TCP ho avuto lo stesso identico problema. – bryanbcook