wcf - ejemplos - Atributo de contrato inválido para IMetadataExchange
wcf soap (10)
Actualicé un Servicio WCF a .NET Framework 4.5. Después de hacerlo, noté una línea IMetaDataExchange
azul alrededor de IMetaDataExchange
en el archivo de configuración del host.
Así es como se ve la sección de servicios de la configuración:
<services>
<service behaviorConfiguration="MyBehavior" name="MyServiceHost">
<endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Cuando IMetadataExchange
el mouse sobre IMetadataExchange
el error dice:
El atributo ''contrato'' no es válido: el valor ''IMetadataExchange'' no es válido según su tipo de datos ''serviceContractType'' - Falló la restricción de enumeración.
El servicio parece funcionar bien. Así que tengo curiosidad por qué esto es inválido.
¿Se puede eliminar el archivo .SUO (archivo de opción de usuarios de solución) después de cerrar VS? Esto restablecerá el caché para el componente XMLEditor en VS y solucionará su problema.
Agregué System.ServiceModel a las referencias para el proyecto y se fue
Cerrando VS2013 Prof, eliminar la carpeta "obj" y volver a compilar ha hecho el trabajo por mí.
Encontré el problema de que el atributo de contrato distingue entre mayúsculas y minúsculas.
Tenía una solución diferente que hacía referencia al mismo servicio, pero no tenía advertencias en la aplicación.config. ejecuté la comparación en notepad ++ en la sección system.serviceModel de app.config y destacó la diferencia en el caso entre los dos atributos contractuales.
tan pronto como modifiqué el atributo de contrato a la ortografía correcta de mayúsculas y minúsculas, la advertencia desapareció al instante
He resuelto el problema. Si alguna vez cambia su clase de C # en Service1.cs e IService1.cs. También actualice el atributo de nombre en el elemento de servicio "<namespace>. <Classname>" y el atributo de contrato en el elemento endpoind "<namespace>. <Classname>" en su App.config.
Por cierto. lo siento por el mal inglés :)
Quizás no sea la respuesta para el OP, pero otros con este problema deberían verificar que [ServiceContract]
se declare para la interface
de sus servicios, ya que esto produce el error exacto.
SI está ejecutando Intellisense en la advertencia. Aparecerá una lista para que pueda elegir. Puede llamar explícitamente a ese miembro.
Si eliminar el archivo .SUO no funciona, verifique sus referencias para asegurarse de tener la referencia System.ServiceModel. Ese fue el problema que me trajo aquí.
Tuve el mismo problema en el lado del cliente. Para mí, la solución fue eliminar y agregar nuevamente la referencia de servicio.
Tuve un problema similar a esto: varios atributos de name
y contract
muestran en la App.Config de mi WCF Service con el temido blue squiggly, y advertencias que aparecen en la lista de errores.
En mi caso, el problema era que después de crear los servicios y contratos había rediseñado los espacios de nombres del proyecto de servicio, por lo que el * .xsd específico de la solución generado estaba usando los nuevos espacios de nombres pero mi herramienta de refactorización no había actualizado la App.Config con los cambios. Entrar y agregar espacios de nombres completamente especificados solucionó el problema.