使用tcpTransport

时间:2019-07-11 13:50:52

标签: c# .net wcf configuration app-config

我有一个WCF服务托管在Windows服务上,该服务使用自己的凭据在同一网络上运行。安全性并不重要。但是,速度和可靠性很重要。

因此,我尝试使用netTcpBinding绑定。但是,我注意到当我将服务引用到客户端时。它将identity标记添加到配置文件,其中包含服务运行所在的帐户的信息:

<identity>
    <userPrincipalName value="account@domain" />
</identity>

我真的不想在客户端的配置文件中使用它,也不想以编程方式传递它。

当我改用basicHttpBinding时,我注意到它没有添加此标签。但是,我仍然要坚持使用net.tcp。因此,我的下一个尝试是使用customBinding

所以,这就是我的问题所在。我无法引用到客户端的自定义绑定。有人可以验证我的配置吗?也。这足以完全忽略身份标签吗?如果这不是正确的方法,那将是正确的方法?谢谢

<system.serviceModel>
    <services>
        <service name="LicenseServiceLogic.LicenseService">
            <endpoint address="net.tcp://localhost:8000/LicenseService"
                      binding="myCustomBinding"
                      contract="LicenseServiceLogic.ILicenseService">
            </endpoint>
        </service>
    </services>
    <bindings>
      <customBinding>
          <binding name="myCustomBinding">
              <compactMessageEncoding>
               <binaryMessageEncoding/>
              </compactMessageEncoding>
              <tcpTransport listenBacklog ="100" 
                            maxBufferPoolSize ="524288" 
                            maxBufferSize ="2147483647" 
                            maxReceivedMessageSize ="2147483647"/>
          </binding>
      </customBinding>
   </bindings>
   <client>
    <endpoint binding="customBinding" 
              bindingConfiguration="myCustomBinding"
              contract="IMetadataExchange"
              name="http" />
   </client>
</system.serviceModel>

1 个答案:

答案 0 :(得分:1)

首先,我们无法引用到客户端的自定义绑定的原因是我们应该添加MEX服务端点并启用服务元数据行为。像下面一样,

    <system.serviceModel>
      <services>
        <service name="VM1.MyService" behaviorConfiguration="mybehavior">
          <endpoint address="" binding="netTcpBinding" contract="VM1.IService" bindingConfiguration="mybinding">
          </endpoint>
          <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
          <host>
            <baseAddresses>
              <add baseAddress="net.tcp://localhost:5566"/>
            </baseAddresses>
          </host>
        </service>
      </services>
      <bindings>
        <netTcpBinding>
          <binding name="mybinding">
            <security mode="None"></security>
          </binding>
        </netTcpBinding>
      </bindings>
      <behaviors>
        <serviceBehaviors>
          <behavior name="mybehavior">
            <serviceMetadata />
          </behavior>
        </serviceBehaviors>
      </behaviors>
</system.serviceModel>

此外,如果我们不想将身份标签添加到客户端配置中,那么我们要做的就是将“安全模式”设置为“无”。如上图所示。
有关Mex端点的详细信息。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/metadata
随时让我知道是否有什么可以帮助您的。