【发布时间】:2008-11-08 14:33:09
【问题描述】:
我的应用程序同时使用 NetTcpBinding 和 BasicHttpBinding,但它们中的每一个都会公开我的服务类的一个子集。我创建了如下服务。
问题是,即使我刚刚将 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();
【问题讨论】:
-
@Adam:做得很好。今天早上我很快就失去了耐心。