什么时候WCF NetTcpBinding需要完全信任客户端?

时间:2011-01-19 11:09:14

标签: wcf nettcpbinding

我正在使用WCF与多个服务器进行通信。

对于我的本地服务器,netTcpBinding的工作方式与预期的一样,没问题。

但是当我尝试使用app.config中的以下netTcpBinding连接到我的远程服务器(Azure)时,这会在初始化时使应用程序崩溃,因为如果没有完全信任就无法创建netTcpBinding。

app.config文件中的此绑定

<bindings>
  <netTcpBinding>
    <binding name="NetTcpBinding_IService" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
      hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
      maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"
        enabled="false" />
      <security mode="Transport">
        <transport clientCredentialType="None" protectionLevel="EncryptAndSign" />
        <message clientCredentialType="Windows" />
      </security>
    </binding>
  </netTcpBinding>
</bindings>

会导致此错误:

  

为“system.serviceModel / bindings”创建配置节处理程序时发生错误:该程序集不允许部分信任的调用方。 (K:\ Somepath \ Testing.exe.Config第6行)

奇怪的是:在app.config文件中,我将客户端端点连接到其他netTcpBindings(未在绑定部分中明确声明它们)。

为什么这些通用的netTcpBindings部分信任,但我上面展示的那个不是?

或者我只是对此错误消息感到困惑,问题不在于完全信任?

更新:如果我删除&lt; binding&gt;部分东西会运行没有问题。所以我被允许在部分信任中使用netTcpBinding,但我不允许修改参数?这很遗憾,因为我想在我的通信中加入某种形式的加密。

1 个答案:

答案 0 :(得分:2)

部分信任环境中不支持NetTcpBinding。

虽然基本通信工作正常(正如您在其他环境中看到的那样),但TransportSecurity和ReliableMessaging(您在示例配置中使用)等功能明确not supported on partial trust(很糟糕,很长时间)。< / p>