C# 无法从网络获取元数据。tcp://127.0.0.1ServiceName

C# 无法从网络获取元数据。tcp://127.0.0.1ServiceName,c#,.net,wcf,c#-4.0,C#,.net,Wcf,C# 4.0,将服务配置创建为: <system.serviceModel> <services> <service behaviorConfiguration="DefaultBehaviour" name="DocumentManagementService.SharePointToSQL"> <endpoint address=""

将服务配置创建为:

<system.serviceModel>
       <services>
            <service behaviorConfiguration="DefaultBehaviour" 
                     name="DocumentManagementService.SharePointToSQL">
                 <endpoint address=""
                            binding="netTcpBinding" name="docManagementService"
                            contract="DocumentManagementService.ISharePointToSQL" />
                 <endpoint address="/mex" 
                           binding="mexTcpBinding"
                           contract="IMetadataExchange" />
                 <host>

                      <baseAddresses>
                           <add baseAddress="net.tcp://127.0.0.1/DocManagementService" />
                      </baseAddresses>
                 </host>
            </service>
       </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="DefaultBehaviour">
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
通过控制台托管应用程序时,我可以看到端点地址:

但是,当我尝试使用wcftestclient添加服务时,出现以下错误:

Error: 
Cannot obtain Metadata from net.tcp://127.0.0.1/DocManagementService/mex If this 
is a Windows (R) Communication Foundation service to which you have access,
 please check that you have enabled metadata publishing at the specified address.

刚刚更新了托管应用程序的代码:

using (ServiceHost serviceHost = new ServiceHost(typeof(SharePointToSQL)))
            {
                serviceHost.Open();

                foreach (var endPoints in serviceHost.Description.Endpoints)
                {
                    Console.WriteLine(endPoints.Address);
                }

                Console.ReadKey();
                serviceHost.Close();
            }

使用block将控制台读取和主机关闭移动到内部并工作。另一个明智的做法是关闭服务,然后等待控制台读取。由于服务已经关闭,无法创建代理。

问题是您立即关闭了主机(当使用块结束时-这就是使用块的目的)。@usr,是的,刚刚收到了
using (ServiceHost serviceHost = new ServiceHost(typeof(SharePointToSQL)))
            {
                serviceHost.Open();

                foreach (var endPoints in serviceHost.Description.Endpoints)
                {
                    Console.WriteLine(endPoints.Address);
                }

                Console.ReadKey();
                serviceHost.Close();
            }