Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 03.02.15 15:25
Оценка:
использую привязку WSDualHttpBinding по умолчанию.

на локальном компьютере подключаюсь к серверу, а вот с удаленным возникает проблемы, невозможно подключиться. по таймауту подключения клиент вылетает.
Адрес у меня такой http://<имя машины>:4848/Example
Порты открыты — проверял!

Видимо что-то надо в настройках сервера и клиента прописать... вот только что?
Помогите если не сложно
Re: Клиент не подключается к серверу [WCF]
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 03.02.15 15:52
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Видимо что-то надо в настройках сервера и клиента прописать... вот только что?

Первое, на что бы я подумал в отсутствие текста ошибки — безопасность. У WSDualHttpBinding по умолчанию client credentials = "Windows", т.е. используется текущая учетная запись. Если она не доменная, то понятно, что аутентифицировать не получится.

В качестве проверки — отключите безопасность вообще (и на сервере и на клиенте).

Ну а вообще — нужен текст ошибки и конфигурационные файлы (если вы конфигурацию задаете не из кода).
Re[2]: Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 04.02.15 08:15
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, SanyaVB, Вы писали:


SVB>>Видимо что-то надо в настройках сервера и клиента прописать... вот только что?

МР>Первое, на что бы я подумал в отсутствие текста ошибки — безопасность. У WSDualHttpBinding по умолчанию client credentials = "Windows", т.е. используется текущая учетная запись. Если она не доменная, то понятно, что аутентифицировать не получится.

Трассировка ничего не показала, сервер даже не зафиксировал попытки стуков клиента. Оказалось все дело в прокси сервере(правда машины были в одной нашей локальной сети ). На работе мы выходим в инет через прокси. Взял для тестов две тачки и соединил их через роутер. Получилась изолированная локальная сеть — все заработало!

Вообще я привязку брал WSDualHttpBinding для того чтобы можно было бы подключаться к службе через прокси... видимо я оказался не прав. Не подскажите какую привязку(необходим дуплекс) взять и как её настроить чтобы прокси сервер не был помехой?
Re[3]: Клиент не подключается к серверу [WCF]
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 05.02.15 04:47
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Вообще я привязку брал WSDualHttpBinding для того чтобы можно было бы подключаться к службе через прокси... видимо я оказался не прав. Не подскажите какую привязку(необходим дуплекс) взять и как её настроить чтобы прокси сервер не был помехой?

Из тех, что были до 4.5 я не знаю ни одного. По-моему там везде устанавливалось соединение инициируемое сервером, а с прокси это не работает.

Возможно, заработает вариант на WebSockets (это привязка NetHttp(s)Binding), но это резко ограничивает круг ОС, на которых можно работать.
Re[3]: Клиент не подключается к серверу [WCF]
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.02.15 07:43
Оценка:
Здравствуйте, SanyaVB, Вы писали:



SVB>Вообще я привязку брал WSDualHttpBinding для того чтобы можно было бы подключаться к службе через прокси... видимо я оказался не прав. Не подскажите какую привязку(необходим дуплекс) взять и как её настроить чтобы прокси сервер не был помехой?

А пропись в config


<system.net>
    <defaultProxy useDefaultCredentials="true"/>
  </system.net>


не помогает?
Да и зачем использовать WSDualHttpBinding если проще NetTcpBinding и DuplexChannelFactory
например http://www.codeproject.com/Articles/39143/C-WCF-Client-Server-without-HTTP-with-Callbacks-Ma
и солнце б утром не вставало, когда бы не было меня
Отредактировано 05.02.2015 8:03 Serginio1 . Предыдущая версия . Еще …
Отредактировано 05.02.2015 7:57 Serginio1 . Предыдущая версия .
Re: Клиент не подключается к серверу [WCF]
От: Danchik Украина  
Дата: 05.02.15 12:48
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>использую привязку WSDualHttpBinding по умолчанию.


SVB>на локальном компьютере подключаюсь к серверу, а вот с удаленным возникает проблемы, невозможно подключиться. по таймауту подключения клиент вылетает.

SVB>Адрес у меня такой http://<имя машины>:4848/Example
SVB>Порты открыты — проверял!

SVB>Видимо что-то надо в настройках сервера и клиента прописать... вот только что?

SVB>Помогите если не сложно


Судя по порту (телепатируя), я так понял вы пробуете конектится к IIS Express.
Не все так просто: http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer
Re[2]: Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 06.02.15 09:50
Оценка:
Вот такое Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, SanyaVB, Вы писали:


SVB>>Видимо что-то надо в настройках сервера и клиента прописать... вот только что?

МР>Первое, на что бы я подумал в отсутствие текста ошибки — безопасность. У WSDualHttpBinding по умолчанию client credentials = "Windows", т.е. используется текущая учетная запись. Если она не доменная, то понятно, что аутентифицировать не получится.

МР>В качестве проверки — отключите безопасность вообще (и на сервере и на клиенте).


МР>Ну а вообще — нужен текст ошибки и конфигурационные файлы (если вы конфигурацию задаете не из кода).



Михаил, вот такое получаю на сервере
Re[4]: Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 06.02.15 09:57
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Да и зачем использовать WSDualHttpBinding если проще NetTcpBinding и DuplexChannelFactory

Потому что у нас на работе прокси. и задача чтобы к серверу можно было подключаться через прокси. А тут как я понимаю только HTTP и может помочь. Ну а дуплекс нужен для создания тунеля, чтобы служба могла клиентам слать например события и всякие уведомления. Как я понял WSDualHttpBinding тут лучше всего подходит
Re[5]: Клиент не подключается к серверу [WCF]
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.02.15 11:03
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, Serginio1, Вы писали:


S>> Да и зачем использовать WSDualHttpBinding если проще NetTcpBinding и DuplexChannelFactory

SVB>Потому что у нас на работе прокси. и задача чтобы к серверу можно было подключаться через прокси. А тут как я понимаю только HTTP и может помочь. Ну а дуплекс нужен для создания тунеля, чтобы служба могла клиентам слать например события и всякие уведомления. Как я понял WSDualHttpBinding тут лучше всего подходит

С которым огромное количество проблем.
http://www.cyberforum.ru/web-services-wcf/thread1023169-page2.html
http://www.sql.ru/forum/1136647/wsdualhttpbinding-dolgiy-zapusk
и солнце б утром не вставало, когда бы не было меня
Re[6]: Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 06.02.15 12:01
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>С которым огромное количество проблем.

S>http://www.cyberforum.ru/web-services-wcf/thread1023169-page2.html
S>http://www.sql.ru/forum/1136647/wsdualhttpbinding-dolgiy-zapusk

OK, Есть ли альтернатива, которая пахала бы с прокси?
Re[7]: Клиент не подключается к серверу [WCF]
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.02.15 12:15
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, Serginio1, Вы писали:


S>>С которым огромное количество проблем.

S>>http://www.cyberforum.ru/web-services-wcf/thread1023169-page2.html
S>>http://www.sql.ru/forum/1136647/wsdualhttpbinding-dolgiy-zapusk

SVB>OK, Есть ли альтернатива, которая пахала бы с прокси?



S>Посмотри https://msdn.microsoft.com/ru-ru/library/system.servicemodel.wsdualhttpbinding.proxyaddress(v=vs.110).aspx

https://msdn.microsoft.com/ru-ru/library/system.servicemodel.wsdualhttpbinding.usedefaultwebproxy(v=vs.110).aspx
и солнце б утром не вставало, когда бы не было меня
Отредактировано 06.02.2015 12:25 Serginio1 . Предыдущая версия .
Re[2]: Клиент не подключается к серверу [WCF]
От: SanyaVB  
Дата: 06.02.15 12:25
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, SanyaVB, Вы писали:


SVB>>использую привязку WSDualHttpBinding по умолчанию.


SVB>>на локальном компьютере подключаюсь к серверу, а вот с удаленным возникает проблемы, невозможно подключиться. по таймауту подключения клиент вылетает.

SVB>>Адрес у меня такой http://<имя машины>:4848/Example
SVB>>Порты открыты — проверял!

SVB>>Видимо что-то надо в настройках сервера и клиента прописать... вот только что?

SVB>>Помогите если не сложно


D>Судя по порту (телепатируя), я так понял вы пробуете конектится к IIS Express.

D>Не все так просто: http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

а чего это он решил к IIS Express???

У меня тупа 2 консольных приложениям и явно я к IIS Express не лезу:

Клиент
 Console.Write("Введите адрес и порт <IP>:<Port> ");
 string address = string.Format("http://{0}", Console.ReadLine());
 Client client = new Client(new InstanceContext(new Test()), GetHttpBinding(), new EndpointAddress(new Uri(address)));
 client.Test();

   private static Binding GetHttpBinding()
   {
        WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.None);
        binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
        return binding;
   }

  class Client : DuplexClientBase<Server.IManagerContract>, Server.IManagerContract
    {
        public Client(InstanceContext callbackInstance, Binding binding, EndpointAddress remoteAddress) 
            : base(callbackInstance, binding, remoteAddress) { }

        public void Test()
        {
            base.Channel.Test();
        }
    }


Сервер
Console.Write("Enter address and port <IP>:<Port> ");
string address = string.Format("http://{0}", Console.ReadLine());
Console.WriteLine(address);
using (ServiceHost managerHost = new ServiceHost(typeof(Manager), new Uri(address)))
{
   managerHost.AddServiceEndpoint(typeof(IManagerContract), GetHttpBinding(), string.Empty);
   try { managerHost.Open(); }
   catch (Exception ex)
   {
      do
      {
         Console.WriteLine(ex.Message);
         Console.WriteLine();
         ex = ex.InnerException;
      } while (ex != null);
    }
    while (Console.ReadKey(true).Key != ConsoleKey.Escape) ;
}

   private static Binding GetHttpBinding()
   {
        WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.None);
        binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
        return binding;
   }
Re[7]: Клиент не подключается к серверу [WCF]
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.02.15 16:35
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Здравствуйте, Serginio1, Вы писали:


S>>С которым огромное количество проблем.

S>>http://www.cyberforum.ru/web-services-wcf/thread1023169-page2.html
S>>http://www.sql.ru/forum/1136647/wsdualhttpbinding-dolgiy-zapusk

SVB>OK, Есть ли альтернатива, которая пахала бы с прокси?

Посмотри в сторону WebSockets который кстати использует SignalR
https://msdn.microsoft.com/ru-ru/library/hh977020(v=vs.110).aspx
и солнце б утром не вставало, когда бы не было меня
Re[3]: Клиент не подключается к серверу [WCF]
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 08.02.15 07:53
Оценка:
Здравствуйте, SanyaVB, Вы писали:

SVB>Михаил, вот такое получаю на сервере

Ну собственно так и получается — при попытке установить обратное соединение (а именно так, как я понимаю, работают Duplex соединения поверх HTTP) ваш компьютер не обнаруживается:

The remote name could not be resolved: 'sanyavb'


Поэтому, варианты:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.