Выдаёт разные ошибки:
Подключение к сокету было прервано. Возможно, это вызвано ошибкой обработки сообщения, превышением времени ожидания на удаленном узле или проблемой с выделенным сетевым ресурсом. Тайм-аут локального сокета: "00:00:59.8087818"
или
Коммуникационный объект System.ServiceModel.Channels.ServiceChannel нельзя использовать для связи, так как он находится в состоянии Faulted.
Брандмаузер выглядит вот так:
Как видно, хост включён
Проверял через netstat -a: прослушивание идёт, порты с 7000 - 8000 открыты, когда клиент и сервер на одной машины программа работает
Конфиг клиента :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICalculator" />
</basicHttpBinding>
<netTcpBinding>
<binding name="NetTcpBinding_ICalculator">
<security>
<transport sslProtocols="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="http://localhost:7877/WcfSimpleProject.Calculator"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICalculator"
contract="Calc.ICalculator" name="BasicHttpBinding_ICalculator" />
<endpoint address="net.tcp://"тот ip, на котором запущен хост":7897/WcfSimpleProject.Calculator"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ICalculator"
contract="Calc.ICalculator" name="NetTcpBinding_ICalculator">
<identity>
<userPrincipalName value="" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Конфиг хоста:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<system.serviceModel>
<services>
<service name="WcfSimpleProject.Calculator" behaviorConfiguration="MexB">
<endpoint address="WcfSimpleProject.Calculator" binding="basicHttpBinding" contract="WcfSimpleProject.ICalculator"></endpoint>
<endpoint address="WcfSimpleProject.Calculator" binding="netTcpBinding" contract="WcfSimpleProject.ICalculator"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:7877/"/>
<add baseAddress="net.tcp://"ip хоста"/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MexB">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
А вот код клиента:
using CalcClient.Calc;
using System;
namespace CalcClient
{
internal class Program
{
private static CalculatorClient client = new CalculatorClient("NetTcpBinding_ICalculator");
static void Main(string[] args)
{
string inputStr = null;
while (inputStr != "close")
{
inputStr = Console.ReadLine();
try
{
ChooseRealisation(ParseInputStr(inputStr));
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}
private static string[] ParseInputStr(string input)
{
return input.Split(' ');
}
private static void ChooseRealisation(string[] parsedInputString)
{
switch(parsedInputString[1])
{
case "+":
client.Plus(Convert.ToInt32(parsedInputString[0]), Convert.ToInt32(parsedInputString[2]));
break;
case "-":
client.Minos(Convert.ToInt32(parsedInputString[0]), Convert.ToInt32(parsedInputString[2]));
break;
case "*":
client.Multiple(Convert.ToInt32(parsedInputString[0]), Convert.ToInt32(parsedInputString[2]));
break;
case "/":
client.Divide(Convert.ToInt32(parsedInputString[0]), Convert.ToInt32(parsedInputString[2]));
break;
default:
Console.WriteLine("Данные были введены некорректно");
break;
}
}
}
}
Проблема предположительно в том, что клиент просто не может подключиться. Искренне не понимаю почему. Ip белый, версия сервера Windows Server 2012 R2. Если брандмаузер не трогать, то просто выводится о шибка о неподключении через 21 секунду
Есть правило для портов, используемых мною: