Pregunta

Durante el último mes, he notado un comportamiento extraño en el que se llama el servicio de descanso incorrecto con la pila de servicio.

Todo parece estar funcionando y luego, cuando agrego un nuevo servicio de descanso, algunos de cómo mi servicio de descanso de trabajo no funciona correctamente (es decir, el servicio de descanso incorrecto se llama).

Explicaré cómo tengo mis datos de datos para los servicios que pueden explicar por qué estoy obteniendo el problema.

Inicialmente tuve:

[DataContract(Name = "MyService", Namespace = "")]
[RestService("/api/v1/dvbs/{ServiceName}", "GET", "application/xml")]
public class GetServiceDto
{
    [DataMember(Name = "SessionId", Order = 1)]
    public string SessionId { get; set; }
    [DataMember(Name = "UserName", Order = 2)]
    public string UserName { get; set; }
    [DataMember(Name = "ServiceName", Order = 3)]
    public string ServiceName { get; set; }
}

y, como estaba pasando los mismos datos (SessionId, Nombre de usuario y Nombre de Servicio) en todas mis llamadas, cualquier servicio nuevo comenzó como:

[DataContract(Name = "MyService", Namespace = "")]
[RestService("/api/v1/dvbs/{ServiceName}/tuners", "GET", "application/xml")]
public class GetTunersDto : GetServiceDto
{
}

Como ya he mencionado esto todo funcionaba bien, pero cuando he añadido un nuevo servicio, cuando me llamaron "api / v1 / DVBS / {servicename} el servicio "api / v2 / DVBS / {servicename} / sintonizadores" sería llamado.

quité la relación heredada para que tenga:

[DataContract(Name = "MyService", Namespace = "")]
[RestService("/api/v1/dvbs/{ServiceName}/tuners", "GET", "application/xml")]
public class GetDvbConfigTunersDto
{
    [DataMember(Name = "SessionId", Order = 1)]
    public string SessionId { get; set; }
    [DataMember(Name = "UserName", Order = 2)]
    public string UserName { get; set; }
    [DataMember(Name = "ServiceName", Order = 3)]
    public string ServiceName { get; set;}
}

y funciona bien ahora.

Lo que es extraño es que funcionaba bien y solo cuando agregué un nuevo servicio en una fecha posterior que incurrió en el mapeo incorrecto.

¿Alguna idea?

¿Fue útil?

Solución

Solo puede tener 1 Solicitud de DTO por servicio y solicitud de heredación DTOS hereda las rutas de atributo que lo hacen GetTunersDTO heredar las mismas rutas que getervicedtoto que llena el servicio en conflicto yRutas ambiguas.

La solución no debe usar la herencia en DTOS (especialmente Solicitar DTOS).

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