Когда WCF NetTcpBinding нуждается в полном доверии к клиенту? - PullRequest
3 голосов
/ 19 января 2011

Я использую WCF для связи с несколькими серверами.

Для моего локального сервера netTcpBinding работает как положено, без проблем.

Но когда я пытаюсь подключиться к моему удаленному серверу (Azure) с помощью следующего netTcpBinding в app.config, это приведет к аварийному завершению приложения при инициализации, поскольку 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. Конфигурация строки 6)

Странная вещь: в файле app.config я получил клиентские конечные точки, подключающиеся к другим netTcpBindings (без явного объявления их в разделе привязки).

Почему эти общие netTcpBindings работают с частичным доверием, а тот, который я показал выше, не работает?

Или я просто запутался в этом сообщении об ошибке, и проблема не в полном доверии?

Обновление: если я удалю раздел , все будет работать без проблем. Так что мне разрешено использовать netTcpBinding при частичном доверии, но мне не разрешено изменять параметры? Это жаль, так как я хотел бы иметь некоторую форму шифрования в моем сообщении.

1 Ответ

2 голосов
/ 26 января 2011

NetTcpBinding вообще не поддерживается в средах с частичным доверием.

Несмотря на то, что базовая связь работает нормально (как вы видели в других средах), такие функции, как TransportSecurity и ReliableMessaging (которые есть в вашем примере конфигурации), явно не поддерживаются при частичном доверии (это отстой, большое время).

...