valores una servicio remitente referencia que pueden puede obtener metadatos los invocar habilitar error endpointaddresses destinatario desconocido contienen concuerdan compruebe componente wcf wsdl

wcf - servicio - los metadatos contienen una referencia que no se puede resolver



Alojamiento WCF: puede acceder al archivo svc pero no puede ir al enlace wsdl (4)

Sí, el problema es publicar metadatos. Solo agregando uno más consejos. También puede agregar metadatos de servicio usando código, como este:

ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; host.Description.Behaviors.Add(smb);

Más detalles aquí: http://msdn.microsoft.com/en-us/library/aa738489%28v=vs.110%29.aspx

Tengo un servicio WCF alojado en IIS 7.5. Tengo dos servidores, uno para prueba y otro para producción.

El servicio funciona bien en el servidor de prueba, pero en el servidor de producción tengo el siguiente error.

Cuando accedo a la dirección http //..../ service.svc, puedo ver la página predeterminada que dice:

Usted ha creado un servicio.

Para probar este servicio, deberá crear un cliente y usarlo para llamar al servicio. Puede hacerlo utilizando la herramienta svcutil.exe desde la línea de comandos con la siguiente sintaxis:

svcutil.exe http: //..../service.svc? wsdl

Esto generará un archivo de configuración y un archivo de código que contiene la clase de cliente. Agregue los dos archivos a su aplicación cliente y use la clase de cliente generada para llamar al Servicio.

Pero cuando hago clic en el enlace wsdl, no puedo ir a la página wsdl. Me devuelve a esta página web predeterminada sin ningún error. Estoy sospechando de un error de autorización de red / firewall pero ¿alguien tiene una experiencia como esta?

Todas las configuraciones de IIS son las mismas para los servidores de prueba y producción.

Gracias, mis mejores deseos.


Básicamente necesita tres cosas para habilitar la búsqueda en su WSDL para un servicio WCF:

  1. un comportamiento del servicio que habilita los metadatos del servicio
  2. establezca httpGetEnabled = True en ese comportamiento de metadatos del servicio para permitir la exploración http a ese metadato
  3. un punto final mex en tu servicio

Por lo tanto, su configuración del lado del servidor podría ser algo como esto (más un poco más):

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="MetadataBehavior"> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="MetadataBehavior" name="YourService"> <endpoint address="" binding="basicHttpBinding" contract="IYourService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>

Los puntos 1 y 2 son manejados por esta línea aquí:

<serviceMetadata httpGetEnabled="true" />

Debe hacer referencia al comportamiento del servicio en su etiqueta <service> para que se active.

El punto 3 (punto final MEX) es esta sección aquí:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

Para http, utilice el mexHttpBinding , y el contrato IMetadataExchange es un contrato del sistema WCF para el intercambio de metadatos.


tuvo el mismo problema Lo arreglé agregando httpsGetEnabled a serviceBehaviors> comportamiento como este:

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>

tal vez ayuda a alguien más. no pienses que necesitas esta pista después de 4 años =)


Sé que esa respuesta es muy tarde pero tuve el mismo problema y la solución fue:

Agregue etiquetas [ServiceContract] y [OperationContract] en la interfaz que se implementa en el servicio .svc . Visual Studio crea interfaz cuando selecciona WCF Service pero borré la interfaz y creé mi propia interfaz.

[ServiceContract] public interface IService1 { [OperationContract] void DoWork(); }

Espero ayudar a alguien