Pregunta

Estoy trabajando en un proyecto donde tengo 2 servicios web que necesitan la misma entidad. Los 2 servicios web están en el mismo servidor, por lo que en el back-end, comparten las mismas clases.

En la parte frontal, mi código consume ambos servicios web y ve las entidades de ambos servicios como separadas (en diferentes espacios de nombres), por lo que no puedo usar la entidad en ambos servicios.

¿Alguien sabe de una manera de permitir que esto funcione en .NET 2.0?

He hecho esto con mi entidad:

[XmlType(TypeName = "Class1", Namespace = "myNamespace")]
public class Class1
{
    public int field;
}

Esperando que mi IDE de alguna manera " sepa " que la clase es la misma en ambos servicios web, por lo que no crearía entidades separadas para ambas clases, pero no hay suerte.

¿Es posible hacer esto con los servicios web .NET 2.0?

¿Fue útil?

Solución

Creo que no puedes hacerlo desde dentro de VS pero puedes usar manualmente la utilidad wsdl.exe de esta manera:

wsdl.exe /sharetypes http://localhost/MyService1.asmx?wsdl http://localhost/MyService2.asmx?wsdl

Observe la opción / sharetypes que activa la función de compartir tipo. Esta función crea un archivo de código con una definición de tipo único para tipos idénticos compartidos entre diferentes servicios (el espacio de nombres, el nombre y la firma de conexión deben ser idénticos).

Más información:

Otros consejos

No estoy seguro de los detalles de la implementación con .NET 2.0, pero creo que lo que quiere hacer es poner las clases comunes en un archivo XSD separado y referirse a él desde sus dos WSDL. De esta manera, los tipos comunes tienen el mismo espacio de nombres entre los dos servicios.

Ahora, cómo haces esto en .NET 2.0, no pude darte los detalles sobre ...

¿Puedes verificar el espacio de nombres de la entidad? Asegúrese de que sea igual en ambos servicios web.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top