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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.