WCF, IIS, IE и деплоймент
От: RostR  
Дата: 06.12.09 21:43
Оценка:
И так уважаемые коллеги , опишу проблему ...

Два компьютера:

Первый ( называемый сервером ) на нем бежит IIS...
на IIS хостится сайт и WCF сервис, который никакого
отношения к логике сайта не имеет.
Для тестирования сервиса был написан клиент,
который вызывает сервис следующим образом :

для теста — http://localhost/MyServiceSite/myService.svc
для реальной работы — http://mySite.com/MyServiceSite/myService.svc

Все работает как часы, проверка в IE этих адресов так же отображает
корректную страницу с WSDL... Ну Вы знаете
Короче на сервере все прекрасно и удивительно...

Если я Вас еще не очень утомил, переходим к сути вопроса !

Н а второй машине( пользовательской ) :
Запускаем IE со вторым адресом, все работает !!! Страница с сервисом показывается.
Проблеммы начинаются, когда запускаем клиента ( код клиента на обоих
машина одинаков ), клиент вылетает по тайм ауту.

И так вопрос в чем проблема ???
Почему при всех равных условиях — в одном случае все работает(сервер),
а во втором(пользователь) работает только IE ???

Конфиг сервиса:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsDualHttpBinding>
                <binding name="DualBinding">
                    <security mode="None">
                        <message clientCredentialType="None" />
                    </security>
                </binding>
            </wsDualHttpBinding>
        </bindings>
        <services>
            <service behaviorConfiguration="ServiceBehavior" name="MyServiceLib.MyServices">
                <endpoint address="" 
                                          binding="wsDualHttpBinding" 
                                          bindingConfiguration="DualBinding"
                                          contract="MyServiceLib.IMyServices">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehavior">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
    <system.webServer>
        <directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate" />
    </system.webServer>
</configuration>



Код клиента :
//
// все переменные определены на уровне класса !!!
//
bool ConnectToService()
{
   try
   {

      if (objMyService == null )
      {
         objMyCallback = new MyCallback(this);

         string endPointAddress = "http://mySite.com/MyServiceSite/myService.svc";

         WSDualHttpBinding objWSDualHttpBinding = new WSDualHttpBinding();
         objWSDualHttpBinding.Security.Mode = WSDualHttpSecurityMode.None;
         objWSDualHttpBinding.Security.Message.ClientCredentialType = MessageCredentialType.None;

         objChannelFactory = new DuplexChannelFactory<IMyServices>( objMyCallback, 
                                                                    objWSDualHttpBinding, 
                                                                    new EndpointAddress(endPointAddress));

         objMyService = objChannelFactory.CreateChannel();

       }
   }
   catch (Exception e)
   {
      return false;
   }

   return true;
}
Re: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 07.12.09 06:51
Оценка:
Неужели вопрос настолько некорректен( или тривиалент), что
никто не ответил ? Просветите неуча, будте добры ...
Re[2]: WCF, IIS, IE и деплоймент
От: Lexxpin  
Дата: 07.12.09 07:33
Оценка:
Здравствуйте, RostR, Вы писали:

RR>Неужели вопрос настолько некорректен( или тривиалент), что

RR>никто не ответил ? Просветите неуча, будте добры ...
Видимо, причин проблем может быть столько, что ни кто не решается предложить решение.
Re: WCF, IIS, IE и деплоймент
От: anton_t Россия  
Дата: 07.12.09 12:18
Оценка:
Здравствуйте, RostR, Вы писали:

RR>И так уважаемые коллеги , опишу проблему ...


Клиент что из себя представляет? ASP.NET, WPF/Silverlight, ещё что-то?
Re: WCF, IIS, IE и деплоймент
От: Аноним  
Дата: 07.12.09 12:26
Оценка:
RR>машина одинаков ), клиент вылетает по тайм ауту.

Ну увеличь время тайматов на клиенте немного
Re: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 07.12.09 22:32
Оценка:
>Клиент что из себя представляет? ASP.NET, WPF/Silverlight, ещё что-то?
Клиент, простое WCF приложение, одно слово — тестовый диалог.

Напрягает что, IE справляется с этим адресом без проблем.
И еще, может, кто знает форум посвещенный только WCF...
без обид Уважаемые, просто может по Новый Год, все в запарке,
а в тематическом форуме, может и пихнут в какую-нить сторону...

Exeption по тайм ауту :

{"The open operation did not complete within the allotted timeout of 00:01:00.
The time allotted to this operation may have been a portion of a longer timeout."}


>Ну увеличь время тайматов на клиенте немного

По умолчанию, установлена 1 минута, можно добежать до Канадской границы,
даже Dial up connection
Re: WCF, IIS, IE и деплоймент
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 08.12.09 05:17
Оценка:
Здравствуйте, RostR, Вы писали:

RR>Конфиг сервиса:


RR>
RR><skipped>
RR>        <services>
RR>            <service behaviorConfiguration="ServiceBehavior" name="MyServiceLib.MyServices">
RR>                <endpoint address="" 
RR>                                          binding="wsDualHttpBinding" 
RR>                                          bindingConfiguration="DualBinding"
RR>                                          contract="MyServiceLib.IMyServices">
RR>                    <identity>
RR>                        <dns value="localhost" />
RR>                    </identity>
RR>                </endpoint>
RR>                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
RR>            </service>
RR>        </services>
RR><skipped>
RR>

Есть мнение, что дело в выделенном элементе... Зачем вы его вписали? А тест с помощью ИЕ не показателен, ибо он использует другой endpoint (mex), для которого у вас ограничений нет...
[КУ] оккупировала армия.
Re: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 08.12.09 05:18
Оценка:
>Клиент что из себя представляет? ASP.NET, WPF/Silverlight, ещё что-то?
Клиент, простое WCF приложение, одно слово — тестовый диалог.

Sorry !!!

Клиент, простое WPF приложение...
Re: WCF, IIS, IE и деплоймент
От: Jolly Roger  
Дата: 08.12.09 05:45
Оценка:
Здравствуйте, RostR, Вы писали:

Я с WCF только-только начал знакомиться, так что запросто могу и глупость ляпнуть Но вот у Вас используется wsDualHttpBinding. То бишь клиент должен быть готов принимать входящие соединения, это соблюдается? Может клиент вообще с серверной машины не видим? Ну там за прокси спрятался, или на нём брандмауэр входящие рубит.
"Нормальные герои всегда идут в обход!"
Re[2]: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 08.12.09 05:50
Оценка:
Здравствуйте, koandrew, Вы писали:

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


RR>>Конфиг сервиса:


RR>>
RR>><skipped>
RR>>        <services>
RR>>            <service behaviorConfiguration="ServiceBehavior" name="MyServiceLib.MyServices">
RR>>                <endpoint address="" 
RR>>                                          binding="wsDualHttpBinding" 
RR>>                                          bindingConfiguration="DualBinding"
RR>>                                          contract="MyServiceLib.IMyServices">
RR>>                    <identity>
RR>>                        <dns value="localhost" />
RR>>                    </identity>
RR>>                </endpoint>
RR>>                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
RR>>            </service>
RR>>        </services>
RR>><skipped>
RR>>

K>Есть мнение, что дело в выделенном элементе... Зачем вы его вписали? А тест с помощью ИЕ не показателен, ибо он использует другой endpoint (mex), для которого у вас ограничений нет...

Спасибо, что ответили... С IE замечание принято, пробел в образовании.
Что касается : <dns value="localhost" />
получил по умолчанию после работы с "Microsoft Service Configuration Editor",
но подумал, что, если сервис бежит на машине с IIS то данная
запись корректна... Впрочем с логикой согласен, закоментировал,
перегрузил ИИС... То же поведение : клиент на серверной машине,
работает, на клиентской нет. Исключение осталось тем же... увы
Re[2]: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 08.12.09 05:56
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

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


JR>Я с WCF только-только начал знакомиться, так что запросто могу и глупость ляпнуть Но вот у Вас используется wsDualHttpBinding. То бишь клиент должен >быть готов принимать входящие соединения, это соблюдается? Может клиент вообще с серверной машины не видим?

>Ну там за прокси спрятался, или на нём брандмауэр входящие рубит.

Мысль здравая, но дома я не имею прокси.
Но в любом случае, как проверить эту догадку ? Подскажете ?!
Re[3]: WCF, IIS, IE и деплоймент
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 08.12.09 06:09
Оценка:
Здравствуйте, RostR, Вы писали:

RR>Спасибо, что ответили... С IE замечание принято, пробел в образовании.

RR>Что касается : <dns value="localhost" />
RR>получил по умолчанию после работы с "Microsoft Service Configuration Editor",
RR>но подумал, что, если сервис бежит на машине с IIS то данная
RR>запись корректна... Впрочем с логикой согласен, закоментировал,
RR>перегрузил ИИС... То же поведение : клиент на серверной машине,
RR>работает, на клиентской нет. Исключение осталось тем же... увы

Тогда попробуйте поставить сниффер и посмотреть, что куда передаётся (или не передаётся, а должно бы). Может это сможет пролить свет на происходящее...
[КУ] оккупировала армия.
Re[3]: WCF, IIS, IE и деплоймент
От: Jolly Roger  
Дата: 08.12.09 06:18
Оценка:
Здравствуйте, RostR, Вы писали:

RR>Мысль здравая, но дома я не имею прокси.

RR>Но в любом случае, как проверить эту догадку ? Подскажете ?!

Ну для начала банально пингануть клиента с серверной машины. Отключить брандмауэр для пробы. Посмотреть NetStat'ом, что слушает клиент, если что-то слушает клиент, какой порт. Попробовать подключиться на этот порт чистым сокетом, просто подключиться — минуты должно хватить для пробы. Как-то так...Ну и сниффером конечно-же стоит глянуть.
"Нормальные герои всегда идут в обход!"
Re[4]: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 08.12.09 06:22
Оценка:
Здравствуйте, koandrew, Вы писали:

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


RR>>Спасибо, что ответили... С IE замечание принято, пробел в образовании.

RR>>Что касается : <dns value="localhost" />
RR>>получил по умолчанию после работы с "Microsoft Service Configuration Editor",
RR>>но подумал, что, если сервис бежит на машине с IIS то данная
RR>>запись корректна... Впрочем с логикой согласен, закоментировал,
RR>>перегрузил ИИС... То же поведение : клиент на серверной машине,
RR>>работает, на клиентской нет. Исключение осталось тем же... увы

K>Тогда попробуйте поставить сниффер и посмотреть, что куда передаётся (или не передаётся, а должно бы). Может это сможет пролить свет на происходящее...

Значит сниффер, понял... Будем снифферить...
Re[4]: WCF, IIS, IE и деплоймент
От: RostR  
Дата: 08.12.09 06:25
Оценка:
Здравствуйте, Jolly Roger, Вы писали:

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


RR>>Мысль здравая, но дома я не имею прокси.

RR>>Но в любом случае, как проверить эту догадку ? Подскажете ?!

JR>Ну для начала банально пингануть клиента с серверной машины.


JR>Отключить брандмауэр для пробы.

JR>Посмотреть NetStat'ом, что слушает клиент, если что-то слушает клиент, какой порт.
JR>Попробовать подключиться на этот порт чистым сокетом, просто подключиться — минуты должно хватить для пробы. Как-то так...Ну и сниффером конечно-же стоит глянуть.
Ок... будем делать копать...
Re[5]: WCF, IIS, IE и деплоймент
От: Jolly Roger  
Дата: 08.12.09 06:52
Оценка:
Здравствуйте, RostR, Вы писали:

Я пока не знаю, на какой порт клиент ожидает callback-подключение, но есть вероятность что через тот-же HTTP.sys, следовательно на клиенте должна быть зарегистрированная конечная точка. Можно глянуть список зарегистрированных httpcfg query urlacl Может наведёт на какие-то мысли.
"Нормальные герои всегда идут в обход!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.