В моем приложении используются как NetTcpBinding, так и BasicHttpBinding, но каждый из них будет отображать подмножество моего класса обслуживания. Я создал службу, как показано ниже.Проблема с использованием Mex
Проблема в том, что, хотя я только что добавил 3 моих контракта на привязку к Mex, все контракты отображаются, когда я хочу добавить сервис в свой проект.
m_ServiceHost = new ServiceHost(typeof(Services), baseAddresses);
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.UseDefaultWebProxy = false;
m_ServiceHost.AddServiceEndpoint(typeof(IMyFirstService), basicHttpBinding, "MyFirstService");
m_ServiceHost.AddServiceEndpoint(typeof(IMySecondService), basicHttpBinding, "MySecondService");
m_ServiceHost.AddServiceEndpoint(typeof(IMyThirdService), basicHttpBinding, "MyThirdService");
NetTcpBinding netTcpBinding = new NetTcpBinding();
netTcpBinding.MaxReceivedMessageSize = 2147483647;
netTcpBinding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
m_ServiceHost.AddServiceEndpoint(typeof(IMyFirstService), netTcpBinding, "MyFirstService");
m_ServiceHost.AddServiceEndpoint(typeof(IMySecondService), netTcpBinding, "MySecondService");
m_ServiceHost.AddServiceEndpoint(typeof(IMyFourthService), netTcpBinding, "MyFourthService");
m_ServiceHost.AddServiceEndpoint(typeof(IMyFifthService), netTcpBinding, "MyFifthService");
m_ServiceHost.AddServiceEndpoint(typeof(IMySixService), netTcpBinding, "MySixService");
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.MaxReceivedMessageSize = 2147483647;
httpTransport.MaxBufferSize = 2147483647;
TextMessageEncodingBindingElement textMessageEncoding = new TextMessageEncodingBindingElement();
textMessageEncoding.ReaderQuotas.MaxDepth = 2147483647;
textMessageEncoding.ReaderQuotas.MaxStringContentLength = 2147483647;
textMessageEncoding.ReaderQuotas.MaxArrayLength = 2147483647;
textMessageEncoding.ReaderQuotas.MaxBytesPerRead = 2147483647;
textMessageEncoding.ReaderQuotas.MaxNameTableCharCount = 2147483647;
System.ServiceModel.Channels.CustomBinding mexHttpCustomBinding = new System.ServiceModel.Channels.CustomBinding(textMessageEncoding, httpTransport);
mexHttpCustomBinding.Name = "MexHttpBindingConfig";
m_ServiceHost.AddServiceEndpoint(typeof(System.ServiceModel.Description.IMetadataExchange), mexHttpCustomBinding, "mex");
m_ServiceHost.Open();
Выполнено. Оригинальный вопрос просто связан с http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/0fe0e548-2063-4cb0-b216-03d19afd9f09. – 2008-11-08 14:55:42