2012-02-02 26 views
10

¿Alguien puede decirme por qué me aparece este error cuando trato de agregar mi servicio?WCF Test Client no puede agregar servicio, no puede obtener metadatos

Error: Cannot obtain Metadata from http://myserver/myapp . If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455 . WS-Metadata Exchange Error URI: http://myserver/myapp Metadata contains a reference that cannot be resolved: ' http://myserver/myapp '. The remote server returned an unexpected response: (405) Method Not Allowed. The remote server returned an error: (405) Method Not Allowed.HTTP GET Error URI: http://myserver/myapp There was an error downloading ' http://myserver/myapp '. The request failed with HTTP status 403: Forbidden.

Actualización: Tengo el siguiente punto final ya,

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

También he creado los comportamientos de servicios:

<serviceBehaviors> 
    <behavior name="myBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
+0

tratar de seguir los vídeos desde el enlace que he publicado. Funcionaron para mí cuando tuve el mismo error –

Respuesta

5

lo he descubierto. Estaba usando una ruta absoluta en uno de mis puntos finales y tenía más de uno. Lo cambié a una ruta relativa y luego todo funcionó.

Además, esto puede suceder si su servicio no se está ejecutando y puede no tener nada que ver con los metadatos. Si tiene un ConfigurationErrorsException entonces verá este resultado también.

También lo obtuve cuando intento guardar cambios de configuración en el proyecto y luego me dice que guarde/sobreescriba/ignore, etc. Terminó agregando un subtipo de proyecto de "diseñador" y una vez que lo eliminé regresó para trabajar apropiadamente

0

Si agregar los metadatos a los puntos finales no es su problema. Verifique más a fondo en los detalles del mensaje de error. Tenía una biblioteca faltante; "No se pudo cargar el archivo o el ensamblaje *".

necesitaba cambiar la referencia a la copia local = True

0

Soy nuevo en WCF y acabo un proyecto entregado a mí con servicios WCF dentro. Estaba teniendo problemas similares con el uso de WCF Test Client en VS2010 en Win7. Después de probar todos los cambios de configuración en este y otros artículos, todavía estaba recibiendo errores similares.

Así que me di por vencido y comencé a leer en WCF. Aquí encontré que VS debería iniciarse como administrador. Aquí está el artículo: Getting Started Tutorial WCF Resulta que tengo que iniciar VS2010 con 'Ejecutar como administrador' marcado. Esto solucionó el problema y pude probar los servicios de WCF en VS2010. Estoy publicando esta respuesta en caso de que otros vean el Run como administrador.

7

Esto también puede suceder cuando intentas devolver un objeto de clase personalizado desde una de las funciones y esa función no tiene el atributo [DataContract] en la declaración de clase. WCF no puede descifrar qué tipo de información devuelve, por lo que arroja el mensaje estándar.

[Serializable] 
[DataContract] 
public class ServiceResult 
{ 
    .... 
} 
+0

Aunque el mensaje genérico indica que no puede encontrar metadatos, intenté eliminar algunos OperationContracts y funcionó. Resulta que tenía un DataMember heredado de Dictionary que causaba este problema. Gracias. – Andrew

+0

+ 5000 de mí, gracias por su solución: en realidad tenía una sola propiedad de sólo lectura en mis clases de entidad y sólo por esa única de sólo lectura metadatos propiedad no se intercambia, después de marcar todas las clases otra cosa con [DataContract] y propiedades con [DataMember] y excluyendo esa propiedad de solo lectura estoy listo para ir - Gracias –

0

Algunas veces no hay nada que hacer con los metadatos o la configuración; en su lugar, simplemente podemos usar 127.0.0.1 en lugar de http: \ localhost \

6

Tuve este problema, resulta que cuando cambié el nombre del archivo .svc no se cambió el nombre de una referencia a él de Service1.svc. Ejecute una búsqueda de todo el proyecto y reemplace .Service1 con su nuevo nombre.

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %> 

Service="MyNamespace.Service1" debe leer Service="MyNamespace.MyRenamedService"

+0

Tuve el mismo problema. –

+0

Mi problema también, ¡gracias! – Ben

0

descubrí que tenía el mismo error debido a un DataContract que estaba usando que heredó de diccionario.La configuración adecuada del DataContract debe ser la siguiente:

[CollectionDataContract(Name = "AdditionalProperties", 
          ItemName = "Property", 
          KeyName = "Key", 
          ValueName = "Value")] 
public class AdditionalProperties : Dictionary<string, string> 
{ 
} 
0

Esta es mi experiencia en este mensaje de error, podría ser útil para otros. Mi servicio WCF está trabajando muy bien en Windows 2008 server.I copiar la misma solución a máquina Dev, .svc archivo seleccionado de solución para que cliente de prueba WCF puede ser lanzada hacia arriba.

cliente de prueba WCF se abrió con errores no pueden obtener los metadatos, el montaje no se puede cargar etc.

clave es, patear por primera vez el servicio (http://localhost:port/Service) entonces sólo tratar cliente de prueba WCF.

0

En mi caso, no me había permitido BindingParams.AllowHttpGet. Cuando eso estaba en true, funcionó ...

Cuestiones relacionadas