2011-10-04 13 views
8

Estoy intentando consumir un servicio WCF 4.0 en mi aplicación. Creé, probé e implementé el servicio desde cero. El servicio funciona en el cliente de prueba WCF y se puede consumir en cualquier otro proyecto de prueba que construí. El problema es esta aplicación en particular ... la única que importa ya que es la razón por la que construí el servicio.Error al consumir servicio: el tipo de nombre 'AAA' no existe en el tipo 'YYY.YYY'

Cuando construyo la aplicación después de hacer referencia al servicio, aparece un error. El error es "El tipo de nombre 'AAA' no existe en el tipo 'YYY.YYY'".

El proyecto que consume el servicio se llama 'YYY.Web' y está en el espacio de nombres 'YYY'.

El servicio se creó inicialmente en el espacio de nombres 'YYY.ReportingService'. Se ha cambiado a un espacio de nombres diferente una vez que se inició este problema. Ahora está en el espacio de nombres 'MMM'.

He añadido una directiva de uso 'YYY.Service1'. También traté de aliasar la directiva using (usando test = YYY.Service1)

Para asegurarme de que algo no estaba mal con mi servicio y sus espacios de nombres, construí un nuevo servicio con un solo método. Toma un parámetro de cadena y devuelve "Hola" y cualquier cadena que se pase. Estos servicios también funcionan en el cliente de prueba WCF y en el par de proyectos de prueba que creé. Este servicio se encuentra en el espacio de nombres SimpleTestService, clase BasicService, con un método llamado GetGreeting. El nombramiento se hizo intencionalmente para evitar posibles colisiones de nombres. El error todavía ocurre con este nuevo servicio.

¿Alguna idea de esto? ¡Gracias!

Respuesta

0

¿Tiene una versión anterior del servicio DLL en el GAC? Su aplicación podría estar haciendo referencia a otra versión del conjunto, por lo tanto, los tipos faltantes.

+0

No.Y el segundo servicio generó el mismo error, excepto con un tipo diferente que no existe en el tipo YYY.YYY después de la compilación la primera vez. – user978467

0

Espero que haya actualizado la referencia de servicio después de cambiar el nombre del espacio de nombres en el servicio. Por lo general, obtienes este error cuando el proxy del lado del cliente no se actualiza con los últimos tipos del servidor. Puedes intentar actualizar la referencia del servicio.

+0

Sí, la referencia se ha actualizado. Este problema ocurrió la primera vez que compilé después de hacer referencia al servicio. Y el mismo problema ocurrió con un segundo servicio. – user978467

0

Me doy cuenta de que es una vieja pregunta, pero acabo de tener este problema y el problema era un conflicto de espacio de nombres.

En mi caso, AAA se llamó ServiceClient y generó el mismo error que experimentó. Una vez que eliminé el conflicto del espacio de nombres (lo llamó ConsoleClient en su lugar), todo funcionó como se esperaba.

19

Esto me tomó un tiempo. Resultó que "The type name 'AAA' does not exist in the type 'YYY.YYY' " fue causado por YYY.YYY - mi nombre de intercambio de clases consumidoras con su espacio de nombres contenedor.

Solución: cambie el nombre de la clase de consumo a algo que no sea igual al nombre completo de su espacio de nombres, es decir, YYY.XXX.

+1

¡Gracias, ese también fue mi problema! –

1

Tengo otro problema. Imaginemos dos proyectos con diferentes espacios de nombres y clases siguientes

Proyecto 1

[DataContract(Namespace="SomeNamespace")] 
public class A 
{ 
    [DataMember] 
    public class B { get; set; } 
} 

Proyecto 2

// Here no DataContract attribute 
public class B 
{ 
    //... 
} 

En este caso obtendrá el mismo error que el anterior. Espero que esto ayude a alguien.

+0

Exactamente, si un contrato hace referencia a un tipo no primitivo que no tiene también un [DataContract] arrojará este error críptico y erróneo. :PAG –

Cuestiones relacionadas