У меня очень странная проблема с клиентским/серверным приложением с 3 уровнями с WCF.Невозможно получить доступ к WCF, размещенному в службе Windows
Во-первых, у меня есть служебные окна, в которых размещаются службы WCF в basicHttpBinding. Это сервер app.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="Business.BSServiceManagement" behaviorConfiguration="myServiceBehave">
<host>
<baseAddresses>
<add baseAddress="http://localhost:35001"/>
</baseAddresses>
</host>
<endpoint address="/Clients" binding="basicHttpBinding" name="Clients" contract="Contracts.BusinessFacade.IBFClientManagement"/>
<endpoint address="/Users" binding="basicHttpBinding" name="Users" contract="Contracts.BusinessFacade.IBFUserManagement"/>
<endpoint address="/Licences" binding="basicHttpBinding" name="Licences" contract="Contracts.BusinessFacade.IBFLicenceManagement"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehave">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Эта услуга развертывается на сервере в DMZ и у меня есть доступ с моего компьютера (в Firefox, если я кладу адрес службы с номером порта)
Во-вторых, У меня есть клиентское приложение, сделанное с winforms, которые используют сервис с ChannelFactory.
Это клиент app.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://192.168.128.1:35001/Clients" binding="basicHttpBinding" name="Clients" contract="Contracts.BusinessFacade.IBFClientManagement"/>
<endpoint address="http://192.168.128.1:35001/Users" binding="basicHttpBinding" name="Users" contract="Contracts.BusinessFacade.IBFUserManagement"/>
<endpoint address="http://192.168.128.1:35001/Licences" binding="basicHttpBinding" name="Licences" contract="Contracts.BusinessFacade.IBFLicenceManagement"/>
</client>
</system.serviceModel>
</configuration>
Когда я отладки клиентского приложения, все работает отлично. Так что я сделал проект установки для развертывания приложения на нескольких компьютерах, но когда я исполню ехе приложения (установленные или непосредственно в бен/выпуска), у меня есть сообщение об ошибке, как это:
There was no endpoint listening at http://192.168.128.1:35001/Users...
Внутреннее исключение говорит :
Невозможно подключиться к удаленному серверу
Я попытался добавить MEX конечной точки, изменение номера порта, проверить сервер и клиент брандмауэр компьютера, я не понимаю, где проблема.
Благодарим за помощь.
EDIT 1:
После нескольких тестов у меня такая же проблема в версии ехе, но не в отладочном ехе.
Если я выполняю debug exe, все работает нормально, но release exe возвращает сообщение об ошибке.
Попытка понять вашу конфигурацию отладки. Ваш узел baseAddress является «localhost» - это служба, работающая локально на вашей машине разработки? – leetibbett
Нет, я установил службу на другой компьютер в DMZ, и я выполняю только клиент для отладки на моей машине и работает отлично. Но когда я устанавливаю клиент на свою машину, он не работает – user1069516
VS обычно работает как администратор, а что, если вы выполняете свой клиент как администратор? Вы добавили настройки брандмауэра для клиента exe? – leetibbett