El error es bastante clara - usted está utilizando HTTP, ha habilitado HttpGetEnabled en su comportamiento de ServiceMetadata, pero no ha proporcionado una dirección base en su configuración.
En IIS, las direcciones base no son necesarias ni utilizadas, ya que la ubicación del archivo * .svc define su dirección de servicio. Cuando es autohospedado, puede y debe usar direcciones base.
Cambiar la configuración para ser algo como esto:
<system.serviceModel>
<services>
<service name="YourService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/YourService" />
</baseAddresses>
</host>
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
..... (your own other endpoints) ...........
</service>
</services>
</system.serviceModel>
Ahora, el "HttpGetEnabled" tiene una dirección base http://localhost.8080/YourService
para ir a conseguir los metadatos de.
O si no te gusta esto, de nuevo, el mensaje de error es bastante claro en su alternativa: definir una URL absoluta para el HttpGetUrl en su ServiceMetadata:
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata
httpGetEnabled="true"
httpGetUrl="http://localhost:8282/YourService/mex" />
</behavior>
</serviceBehaviors>
Los clientes pueden obtener los metadatos de sus puntos finales "mex", ya sea en una URL fija definida como en este segundo ejemplo, o irán a la dirección base del servicio para los metadatos (si hay uno).
Si viene de IIS y no ha adaptado nada, no tendrá ni una dirección base, ni una URL explícita y absoluta para su punto final de intercambio de metadatos, entonces es por eso que obtiene el error que está viendo .
Marc
¿cuál es su código para crear el proxy? – Dani
productsServiceHost = new ServiceHost (typeof (Products.ProductsService)); productosServiceHost.Open(); stop.IsEnabled = true; start.IsEnabled = false; status.Text = "Servicio en ejecución ..."; – Attilah