Неправильная служба отдыха под названием с ServiceStack

StackOverflow https://stackoverflow.com//questions/10697747

  •  12-12-2019
  •  | 
  •  

Вопрос

За последний месяц я заметил нечетное поведение, где неверная служба отдыха называется с помощью сервисной стеки.

ВСЕ, кажется, работает, а затем, когда я добавляю новую службу для отдыха, некоторые, как мой рабочий отдых не работает правильно (то есть неправильная служба отдыха).

Я объясню, как у меня есть свои данные данных для услуг, которые могут объяснить, почему я получаю проблему.

Я изначально имел:

[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; }
}
.

И, как я проходил те же данные (SessionID, имя пользователя и обслуживание) во всех моих звонках, любая новая служба началась как:

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

Как я уже упоминал, все это работает нормально, но когда я добавил новый сервис, когда я позвонил «API / V1 / DVBS / {ServiceName} Услуги» / TUNERS / TUNERS / {SERVICENAME} / TUNERS ".

Я удалил унаследованные отношения, чтобы у меня есть:

[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;}
}
.

И сейчас работает нормально.

Что такое странно, это работает нормально, и только тогда, когда я добавил новый сервис позже, что неверное сопоставление понесено.

Любые идеи?

Это было полезно?

Решение

У вас можно только 1 запрос DTO на сервис и унаследование запроса DTOS наследует маршруты атрибутов, которые делают его GetTunersdto наследует те же маршруты, что и getservicedto,неоднозначные маршруты.

Решение - не использовать наследование на DTOS (особенно запрос DTOS).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top