2012-02-15 13 views
5

Al intentar crear una instancia de un servicio, me estoy poniendo unservicios Web: método no se pueden reflejar excepción

"El método no puede ser reflejada"

excepción. Profundizando en las excepciones internas revela:

"tipos 'WebServiceClient.com.compamy.string1' y 'WebServiceClient.com.company.string' ambos utilizan el nombre del tipo XML, 'cadena', desde namespace 'http://www.w3.org/2001/XMLSchema'. Use los atributos XML para especificar un nombre XML único y/o espacio de nombres para el tipo ".

¿Qué quiere la maldita cosa de mí? Es código autogenerado por VS2010 ... ¿por qué tengo que jugar con él?

Éstos son los dos tipos:

[GeneratedCode("System.Xml", "4.0.30319.233")] 
[Serializable] 
[DebuggerStepThrough] 
[DesignerCategory("code")] 
[XmlType(TypeName = "string", Namespace = "http://www.w3.org/2001/XMLSchema")] 
[XmlRoot("FileName", Namespace = "http://company.com/api3/Content/Download/", IsNullable = true)] 
public partial class string1 : SoapHeader 

y

[GeneratedCode("System.Xml", "4.0.30319.233")] 
[Serializable] 
[DebuggerStepThrougt] 
[DesignerCategory("code")] 
[XmlTypeAttribute(Namespace = "http://www.w3.org/2001/XMLSchema")] 
[XmlRootAttribute("SessionKey", Namespace = "ns", IsNullable = true)] 
public partial class @string : SoapHeader 
+0

¿Por qué no nombrarlo 'StringHeader: SoapHeader'? – abatishchev

Respuesta

7

he encontrado una solución, pero no puedo explicar por qué se está trabajando. Simplemente eliminé todos los atributos de mapeo de todos los métodos y no obtuve más errores.

Líneas removidos:

[XmlType(TypeName = "string", Namespace = "http://www.w3.org/2001/XMLSchema")] 

Si alguien me puede explicar lo agradecería muchísimo!

+0

¿Encontró alguna solución sobre por qué ocurrió esto ?, tengo el mismo problema pero con JSON. – Marcus

+1

Tuve el mismo problema cuando estaba llamando a un servicio web que estaba escrito en java (no estoy seguro si eso importa) desde un cliente C#, también eliminé los atributos de mapeo de tipo y ¡funcionó! realmente no puedo entender por qué! –

+1

Has dicho por qué no funciona solo al volver a escribir el error y puedes ver por qué en tus atributos tus espacios de nombres son diferentes. El espacio de nombre que espera el objeto espera un tipo de cadena, o al menos cuando se serializa, el nodo será "cadena". Tenía tanto el tipo como un error similar al de tu espacio de nombres. Intenté enviar mi xml con la "w3" como tú, luego con una biblioteca de soap disponible, y finalmente funcionó cuando hice referencia a la url de la API donde está la wsdl ... si usaste una wsdl para obtener tu esquema tal vez intentarlo – user1040975

Cuestiones relacionadas