У меня есть 2 WCF-Self-Hosted Приложения с моно. Один находится на Windows 8, а другой - на Ubuntu Linux. Когда я помещаю оба приложения под Windows8 или Ubuntu, они обмениваются данными. Когда я размещаю их отдельно, один в Windows и один в Linux, я получаю «System.IO.IOException: Read Failure ---> System.Net.Sockets.SocketException: соединение сброшено с помощью одноранговой сети.MONO WCF Self-Hosted Service Pair получение соединения сброс с помощью peer при использовании net.tcp
У меня есть прочитайте каждую страницу, которую я могу найти об этой ошибке, не повезло, как ее исправить. i я атакую приложение app.config обоих приложений. Они обмениваются данными с помощью net.TCP, а svcutil отлично работал с метаданными.
КЛИЕНТ App.config (Это один пытается вытащить данные из других, и когда он собирает данные, называет 3rd Не реализованное Еще обслуживание.)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IMiServicio" >
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://192.168.1.101:8090/ProyectoDistribuidoTCP"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IMiServicio"
contract="IMiServicio" name="NetTcpBinding_IMiServicio">
<identity>
<userPrincipalName value="ALEXMAINGEAR\Alex" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
SERVER App.config (это один обслуживает данные второй службы)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<services>
<service name="ProyectoDistribuido.MiServicio" behaviorConfiguration="metadataSupport">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ProyectoDistribuidoHTTP"/>
<add baseAddress="net.tcp://localhost:8090/ProyectoDistribuidoTCP"/>
</baseAddresses>
</host>
<endpoint binding="basicHttpBinding"
contract="ProyectoDistribuido.IMiServicio"/>
<endpoint binding="netTcpBinding"
contract="ProyectoDistribuido.IMiServicio"/>
<endpoint address= "tcpmex"
binding="mexTcpBinding"
contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="netTcpBinding">
<security mode= "None"/>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
я играл что-то похожее несколько лет назад (~ Моно 2,6 или 2,8, Net.Tcp привязки, Windows Server с использованием .NET и Ubuntu Client с использованием Mono), и я не мог заставить его работать. Я решил, что двоичная сериализация несовместима между двумя режимами (по крайней мере, в то время). На вашей стороне Windows вы работаете в .NET или Mono? – TheNextman
Моно на обоих. Я установил Monodevelop на стороне Ubuntu и Xamarin Studio на Windows Side, оба из которых выполняли Mono (подумали разные версии, но не слишком приурочены друг от друга). – AlexFormoso
Как вы его используете на стороне Windows? Просто потому, что вы используете XS, это не значит, что вы используете Mono. Конечно, с MonoDevelop, если вы специально не настроили его на использование Mono в Windows, он по умолчанию выполнил .NET-среду выполнения ... Стоит дважды проверить :) – TheNextman