在过去的一个月里,我注意到一个奇怪的行为,即使用服务堆栈调用了错误的 REST 服务。
一切似乎都在工作,然后当我添加一个新的 REST 服务时,我的工作 REST 服务无法正常工作(即调用了错误的 REST 服务)。
我将解释我如何拥有服务的数据合同,这可以解释我遇到问题的原因。
我最初有:
[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}”服务“api/v2/dvbs/{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;}
}
现在工作正常。
奇怪的是它工作正常,只有当我稍后添加新服务时才会出现错误的映射。
有任何想法吗?