Я сделал сервис, используя обнаружение WCF. Все работает нормально, когда он развернут на определенном порту (с использованием отладки VS2010), но когда я пытаюсь развернуть его в IIS, он находит службу, но не может запустить ни один из методов.
Это код:
DiscoveryClient discoverclient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindResponse response = discoverclient.Find(new FindCriteria(typeof(IService)));
EndpointAddress address = response.Endpoints[0].Address;
ServiceClient client = new ServiceClient(new BasicHttpBinding(), address);
Console.WriteLine(client.getMsg()); //some test function
Console.ReadKey();
При попытке запустить метод client.getMsg()
я получаю следующую ошибку:
EndpointNotFoundException:
Там не было конечной точки прослушивания
http://computerName.domain/services/Service.svc, который может принять
сообщение. Это часто вызвано неправильным адресом или действием SOAP.
См. InnerException, если имеется, для получения более подробной информации.
Но я получил адрес, то есть он нашел его. И если я использую средство развертывания отладки (не для iis), я найду его в http://localhost:port/services/Service.svc
, и он отлично работает. Как я могу развернуть его на iis без проблем?
ОС: win7 64 бит
файл конфигурации:
<services>
<service behaviorConfiguration="RemoteDeploy.Service1Behavior"
name="RemoteDeploy.Service">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="RemoteDeploy.IService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint name="udpDiscoveryEpt" kind="udpDiscoveryEndpoint" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="RemoteDeploy.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceDiscovery>
</serviceDiscovery>
</behavior>
</serviceBehaviors>
</behaviors>