C# 使用VS2015在客户端应用程序中创建net.tcp服务引用

C# 使用VS2015在客户端应用程序中创建net.tcp服务引用,c#,wpf,wcf,C#,Wpf,Wcf,我正在使用VS2015并为web服务创建WPF客户端应用程序。该服务正在专用web服务器上的网络上的IIS上运行。当我尝试添加服务引用时,会收到一条错误消息,表明它无法识别uri前缀 web服务web.config文件如下所示: <system.serviceModel> <diagnostics wmiProviderEnabled="true"> <messageLogging logMalformedMessages="true" logMessagesA

我正在使用VS2015并为web服务创建WPF客户端应用程序。该服务正在专用web服务器上的网络上的IIS上运行。当我尝试添加服务引用时,会收到一条错误消息,表明它无法识别uri前缀

web服务web.config文件如下所示:

<system.serviceModel>
<diagnostics wmiProviderEnabled="true">
  <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
  <netTcpBinding>
    <binding name="netTcpBinding-Streamed" transferMode="Streamed" maxReceivedMessageSize="1073741824">
      <readerQuotas maxStringContentLength="8192000" />
    </binding>
  </netTcpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
      <serviceMetadata httpGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
<service name="[Namespace].Services.IIS">
    <endpoint address="net.tcp://[server:port]/[website on iis]/Shared/Shared.svc" bindingConfiguration="netTcpBinding-Streamed" binding="netTcpBinding" contract="[Namespace].Services.Interfaces.Shared.IShared" />
        <endpoint address="net.tcp://[server:port]/[website on iis]/UITax/Reports.svc" bindingConfiguration="netTcpBinding-Streamed" binding="netTcpBinding" contract="[Namespace].Services.Interfaces.UITax.Reports.IReport" />
        <endpoint address="net.tcp://[server:port]/[website on iis]/UITax/Assignments.svc" bindingConfiguration="netTcpBinding-Streamed" binding="netTcpBinding" contract="[Namespace].Services.Interfaces.UITax.Assignments.IAssignments" />
    </service>
</services>
<extensions>
  <behaviorExtensions>
    <add name="errorHandler" type="[Namespace].Services.Framework.WCF.WcfErrorHandlerExtension, [Namespace].Services.WCF.Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </behaviorExtensions>
</extensions>

正如CodeCaster在对问题的评论中所说,您应该启用元数据发布(
)并添加mex类型为mexHttpBinding(因此在iis上使用)/UITax/Reports.svc)的端点来添加服务引用添加mex类型为mexTcpBinding的端点,并使用您的net.tcp地址添加服务引用

元数据交换的终结点:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>



如果您要生成服务引用,元数据必须根据或问题通过HTTP。请在您的帖子中包含错误消息。CodeCaster:至于您的第一个引用链接-其他应用程序正在使用web服务,但我无权访问源代码。因此,我假设web.config文件不是问题。CodeCaster:至于您的第二个参考链接,服务项目不是我的解决方案或项目的一部分。加上设置“httpGetEnabled=true”会破坏所有正在使用该服务的现有应用程序。我不确定您的建议。我是否需要更改服务器web配置中的端点我不确定您的建议。是否需要将服务器的web.config文件中的端点地址更改为“mex”?此外,正如我在回答CodeCaster时提到的,当我将httpGetEnabled从“false”更改为“true”时,会中断使用此服务的所有其他应用程序。不要更改名称,而是添加一个以上的端点。只需在已经存在的端点之后添加这一行,请参见此处的非常详细的描述。我在web.config文件中添加了另一个端点:并将httpGetEnabled更改为true。我仍然收到相同的错误消息。
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>