Потоковая передача через WCF с использованием NetTcpBinding - PullRequest
1 голос
/ 06 сентября 2010

Я могу успешно использовать потоковую передачу WCF для передачи данных с сервера на клиент на том же компьютере. Однако, как только я развертываю свой сервер на другом компьютере, я получаю сообщения об ошибках типа «Ошибка вызова SSPI: неверное имя целевого участника» Кто-нибудь сталкивался с этим. Я попытался установить SecurotyMode.None с обеих сторон, но это дало мне некоторые другие ошибки тайм-аута!

Вот привязка сервера:

NetTcpBinding binding = new NetTcpBinding();
binding.TransferMode = TransferMode.Streamed;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.CloseTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
var ep = serviceHost.AddServiceEndpoint( typeof( ISessionResultsServer ), binding, string.Format( "net.tcp://localhost:{0}/ResultService", port ) ); 

Вот привязка клиента:

NetTcpBinding clientBinding = new NetTcpBinding();
clientBinding.TransferMode = TransferMode.Streamed;
clientBinding.SendTimeout = TimeSpan.MaxValue;
clientBinding.CloseTimeout = TimeSpan.MaxValue;
clientBinding.MaxReceivedMessageSize = long.MaxValue;
clientBinding.ReceiveTimeout = TimeSpan.MaxValue;

1 Ответ

2 голосов
/ 06 сентября 2010

Это не имеет ничего общего с потоковой передачей.Это проблема безопасности.Вы используете Net TCP с безопасностью Windows, где служба должна проходить аутентификацию на клиенте, а клиент должен проходить аутентификацию на сервисе.

Аутентификация службы в вашем случае основана на имени участника-пользователя.Это имя пользователя процесса, в котором размещается ваш сервис.Вы должны изменить конфигурацию клиента и установить правильную идентификацию в конечной точке.

Что-то вроде:

<client>
  <endpoint name="..." addres="net.tcp://..." binding="netTcpBinding" bindingConfiguration="..." contract="...">
    <identity>
      <userPrincipalName value="MyServiceAccount@MyDomain" />
    </identity>
  </endpoint>
</client> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...