И так уважаемые коллеги , опишу проблему ...
Два компьютера:
Первый ( называемый сервером ) на нем бежит 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;
}