Неправильная служба отдыха под названием с ServiceStack
-
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).