2016-11-16 2 views
0

Я работаю над «проектом Smart Device» с использованием .Net Framework 3.5. Я пытаюсь подключиться к некоторым Java SOAP-сервисам на удаленном сервере.
Чтобы сделать это, я добавил «Веб-ссылки» в свой проект.«Соединение не может быть сделано, потому что целевая машина активно отказалась от этого»

Когда я пытаюсь позвонить в свою веб-службу, я получаю WebException «Невозможно подключиться к удаленному серверу», причем внутреннее исключение «Нет соединения, которое может быть сделано, потому что целевая машина активно отказалась от него».

Я много искал в Интернете и в StackOverflow и нашел много настроек конфигурации ASP и «Unavaliable port», но поскольку у меня есть другое приложение, использующее ту же самую Службу успешно, я не могу понять, почему новый не получает через (это было иногда в моих тестах, так что я полагаю, моя реализация клиента не так уж плохо)

Я попытался посмотреть, есть ли какой-то вопрос подключения к порту с помощью некоторых TcpClient:

  System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(); 
      try 
      { 
       client.Connect("myServerName", 8087); 
       MessageBox.Show("Success"); 
      } catch (Exception ex) 
      { 
       MessageBox.Show("Failure"); 
      } 
      finally 
      { 
       client.Close(); 
      } 

Это соединение выполнено успешно.

Вот пример того, как я называю мой WebService:

WSServiceExtended srv = new WSServiceExtended(); 
srv.Proxy = new System.Net.WebProxy(); 
ServeurWSI wsi = new ServeurWSI(); 
srv.Url = "http://myServerName:8087/myServerApp/services/myService"; 
wsr = srv.login(wsi); 

Услуга называется «Extended», потому что я перекрытая автоматически сгенерированные один для того, чтобы добавить Cookie Managment, так как я использую Compact Framework , После пробы в этой теме: https://social.msdn.microsoft.com/Forums/en-US/34d88228-0b68-4fda-a8cd-58efe6b47958/no-cookies-sessionstate-in-compact-framework?forum=vssmartdevicesvbcs

EDIT:
Я сделал несколько новых тестов с веб-ссылки и получил его на работу.
Когда я добавляю веб-ссылку, я должен поместить некоторый URL-адрес в веб-службу. Когда я устанавливаю его с фактическим именем хоста вместо «localhost», все в порядке. Но, так как я установил его вручную реальный адрес непосредственно перед вызовом, это должно не важно

srv.Url = "http://myServerName:8087/myServerApp/services/myService"; 

EDIT2:
я мог забыть некоторые особенности о моей Environnement.
Веб-службы отображаются на моем компьютере на каком-то сервере Tomcat.
Приложение, над которым я работаю, также разработано на этом компьютере (вот почему я могу добавить ссылки на веб-сайты, поставив «localhost» в адрес)
Затем приложение развернуто на удаленном устройстве (Windows CE), которое будет выполнять вызовы Веб-сервисы через WIFI (там, localhost не будет работать тогда)

Я попытался успешно использовать веб-службы с других компьютеров.

Я начинаю думать, что может быть некоторый дифференциал между вызываемым Url и тем, который установлен, иначе как бы у меня была разница в поведении, такая как описанная в первом редактировании?

EDIT3:
Well..Seems, как это не проблема сети, но .Net Compact Framework (использование?) Вопрос ...
Свойство Url реализации веб-службы просто игнорируется, и один в Reference.cs используется на месте.


Если у кого-то была идея о том, как я мог это сделать, я был бы очень признателен.

ответ

0

Я начал забывать это сообщение, но я, наконец, нашел проблему, которая была беспорядочной, и она не имеет ничего общего с программированием.

Выполнял вызовы, когда устройство было подключено к компьютеру через «Центр мобильных устройств Windows», что позволяет получить доступ к устройству из Windows. При подключении предоставленный хост игнорируется, и все вызовы на указанном порту обрабатываются подключенным компьютером. Отключение устройства позволяет правильно общаться ...

2

Эта ошибка означает, что вы достигли сервера, и сервер сказал «нет». Таким образом, вы либо нажимаете неправильный сервер, либо неверный порт.

Я нахожу, что клиент telnet полезен для тестирования таких вещей. Из командной строки, вы можете сделать:

telnet [servername] [port] 

Так что-то вроде:

telnet myServerName 8087 

Если он идет на пустой экран, то он подключен успешно. Если он не подключится, он скажет вам.

Клиент telnet больше не установлен по умолчанию в Windows 7+, поэтому вам придется его установить. См. Здесь инструкции: https://technet.microsoft.com/en-ca/library/cc771275

Если соединение открыто, вы можете вставить фактический HTTP-запрос, чтобы узнать, что произойдет. Простой GET будет выглядеть примерно так:

GET /myServerApp/services/myService HTTP/1.1 
Host: myServerName:8087 
+0

Если возникла проблема с портом, не будет ли у меня такая же ошибка с TcpClient? И мое другое приложение? Эти последние две работы отлично подходят – Maniz

+1

Оба работают с одной машины? –

+0

Два приложения находятся на разных машинах, но пример кода «TcpClient», который я показал, находится прямо перед вызовом моей веб-службы в том же приложении. – Maniz

1

Одной из причин этой ошибки может быть то, что сервис связывается только с определенным IP-адресом. Вполне возможно, что служба прослушивает только IP-адрес, назначенный имени хоста, но не на IP-адрес localhost (127.0.0.1).

Например:
Если хозяин myServerName имеет публичный IP-адрес 192.168.0.1, ваша служба может выбрать для прослушивания на все IP-адреса, назначенные хосту (иногда с указанием 0.0.0.0), или он может специально слушать Только 192.168.0.1. В этом случае вы не сможете подключиться через 127.0.0.1, потому что служба просто не прослушивает этот IP-адрес.

Вы можете «использовать» эту инверсию этой функции, чтобы сделать услугу доступной только локальным клиентам, а не общедоступным IP-адресам, только при прослушивании только 127.0.0.1, но не в общедоступном IP-адресе. Это иногда используется в Linux, например, чтобы сделать MySQL доступным только на самом хосте.

+0

Спасибо за ответ, но я думаю, что, возможно, я не мог понять, как структурирована моя среда. Я отредактирую свой первоначальный вопрос, чтобы сделать его понятным – Maniz

Смежные вопросы

 Смежные вопросы