c# - habilitar - service metadata in wcf
WCF Test Client no puede agregar servicio, no puede obtener metadatos (9)
Si agregar los puntos finales de los metadatos 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 Copy Local = True
¿Alguien puede decirme por qué me aparece este error cuando intento agregar mi servicio?
Error: no se pueden obtener los metadatos de http: // myserver / myapp . Si se trata de un servicio de Windows (R) Communication Foundation al que tiene acceso, verifique que haya habilitado la publicación de metadatos en la dirección especificada. Para obtener ayuda sobre la publicación de metadatos, consulte la documentación de MSDN en http://go.microsoft.com/fwlink/?LinkId=65455 . URI de error de intercambio WS-Metadata: http: // myserver / myapp Metadata contiene una referencia que no se puede resolver: '' http: // myserver / myapp ''. El servidor remoto devolvió una respuesta inesperada: (405) Método no permitido. El servidor remoto devolvió un error: (405) Método no permitido.HTTP OBTENER URI de error: http: // myserver / myapp Hubo un error al descargar '' http: // myserver / myapp ''. La solicitud falló con el estado HTTP 403: Prohibido.
Actualización: ya tengo el siguiente punto final,
<endpoint address="mex"
binding="mexHttpBinding"
name="Metadata"
contract="IMetadataExchange" />
También tengo los comportamientos de servicio establecidos:
<serviceBehaviors>
<behavior name="myBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
Soy nuevo en WCF y acabo de recibir un proyecto con los servicios de WCF. 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 sobre WCF. Aquí encontré que VS debería iniciarse como administrador. Aquí está el artículo: Introducción 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.
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 /
Tuve este problema, resulta que cuando cambié el nombre del archivo .svc, no se cambió el nombre de una referencia a 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"
debería leer Service="MyNamespace.MyRenamedService"
Descubrí que tenía el mismo error debido a un DataContract que estaba usando heredado de Dictionary. 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>
{
}
Esta es mi experiencia en este mensaje de error, podría ser útil para otros. Mi servicio WCF funciona bien en el servidor de Windows 2008. Copié la misma solución en la máquina Dev, seleccioné el archivo .svc de la solución para que el cliente de pruebas WCF pueda aparecer.
El cliente de pruebas WCF abierto con errores no puede obtener metadatos, el ensamblaje no se puede cargar, etc.
La clave es, primero, reiniciar el servicio ( http: // localhost: port / Service ) y luego solo probar el cliente de prueba WCF.
Esto también puede ocurrir 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
{
....
}
Me lo imaginé. 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 una ConfigurationErrorsException
, verá este resultado también.
También lo obtuve al intentar guardar los cambios de configuración en el proyecto y luego me dijo que guardara / sobreescribiera / ignorase, etc. Terminó agregando un subtipo de proyecto de "diseñador" y una vez que lo eliminé, volvió a funcionar correctamente.
En mi caso, no había activado BindingParams.AllowHttpGet. Cuando eso se estableció en verdadero, funcionó ...