Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Не удается вызвать службу, если она слушает проброшенный порт. / 4 сообщений из 4, страница 1 из 1
20.02.2014, 18:52
    #38567958
HowToSoap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается вызвать службу, если она слушает проброшенный порт.
Привет.

Кто нибудь сталкивался с такой проблемой ?

Служба работает ок. К ней по заданному порту приходят запросы от другой службы (написанной на java, но вряд ли она тут как то влияет).
Так вот - если настроить службу на прослушивание порта, который администратор "пробрасывает" с другого, то до службы ничего не доходит.

А в снифере вот такая ошибка:
Код: c#
1.
2.
3.
4.
5.
HTTP/1.1 500 Internal Server Error
Content-Length: 897
Content-Type: application/soap+xml; charset=utf-8
Server: Microsoft-HTTPAPI/1.0
Date: Thu, 20 Feb 2014 14:22:47 GMT



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
<</s:Header><s:Body>
<s:Fault><s:Code><s:Value>s:Sender</s:Value>

<s:Subcode><s:Value>a:DestinationUnreachable</s:Value></s:Subcode></s:Code>

<s:Reason>

<s:Text xml:lang="ru-RU">.................. .. ........ "http://MyOuterIp:4321/MyService" .... .......... ........ .................... .... .............. .................... ....-.... ............................ AddressFilter .... EndpointDispatcher.  .................. .............................. .............. EndpointAddress .... .............. ...................... .. .....................

</s:Text></s:Reason></s:Fault></s:Body></s:Envelope>




Снифер похоже ломает русский шрифт...

4321 - это порт, который видится извне сети. Пробрасывается же он ко мне на порт 1234


Настройки службы такие
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
    <behaviors>
      <serviceBehaviors>
        <behavior name="My_ServiceBehavior">          
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

      <service name="MyService"
               behaviorConfiguration="My_ServiceBehavior">
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="IMyInterface"
                  bindingConfiguration="wsHttpBinding_MyService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:1234/MyService/" />
          </baseAddresses>
        </host>
      </service>


      <wsHttpBinding>
        <binding name="wsHttpBinding_MyService"
                         hostNameComparisonMode="StrongWildcard" 
                         messageEncoding="Text" textEncoding="utf-8">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>        
      </wsHttpBinding>



Друзья, спасайте!
Горят сроки к чертям - у пользователя все и поломалось при сдаче проекта.
Воспроизвел у себя эту проблему - тоже сделали проброс. Действительно проблема повторилась.
К сожалению пользователь не может сделать себе прямой порт - свои там у них политики безопасности в организации.
...
Рейтинг: 0 / 0
20.02.2014, 21:19
    #38568095
HowToSoap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается вызвать службу, если она слушает проброшенный порт.
После поисков. Прихожу к выводу, что у WCF имеются проблемы с прохождением через NAT.
Кто-нибудь имел дело с NAT ?

PS. Я вынужден использовать wsHttpBinding из-за того, что иначе Java клиент не может связаться с сервером.
Описание этой проблемы есть тут
http://social.msdn.microsoft.com/Forums/vstudio/en-US/f29cd9c8-3c89-43d2-92ae-d2a270ab86b9/client-and-service-binding-mismatch?forum=wcf

Сниффер показывает, что действительно Java клиент посылает "application/soap+xml" - что значит, он опирается на SOAP 1.2.
В WCF по стандарту Soap 1.2. работает wsHttpBinding.

Я пробовал перейти на basicHttpBinding - и получил эту же ошибку (415).
...
Рейтинг: 0 / 0
20.02.2014, 23:12
    #38568172
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается вызвать службу, если она слушает проброшенный порт.
...
Рейтинг: 0 / 0
21.02.2014, 10:42
    #38568497
HowToSoap
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не удается вызвать службу, если она слушает проброшенный порт.
buser http://androidyou.blogspot.ru/2010/09/fix-wcf-addressfilter-mismatch-error.html ?

Удалось, все же, уговорить клиента сделать прямой порт программе.
Уже не горит, но надо все таки доработать программу по уму конечно.

Спасибо за помощь ! Надеюсь ссылка поможет решить проблему, сейчас у меня куча времени спокойно разобраться.
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Не удается вызвать службу, если она слушает проброшенный порт. / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]