ServiceStackで呼び出された間違ったRESTサービス
-
12-12-2019 - |
質問
先月の間、私は誤った休憩サービスがサービススタックと呼ばれている奇妙な動作に気づいた。
すべてが働いているようです、そしてそれから新しい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、username、およびserviceName)を渡していたので、新しいサービスは次のように開始されました:
[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;}
}
.
とそれは今元に機能します。
奇妙なことは元気で、間違ったマッピングが発生した後の新しいサービスを追加したときに初めて機能していました。
任意のアイデア?
解決
サービスごとに1つの要求DTOを持ち、継承することで、継承することで、 gettunersdto getServicedTo と同じルートを継承する属性ルートを継承する属性ルートを継承し、矛盾がある。あいまいなルート
解決策は、DTOS(特に要求DTOS)の継承を使用しないことです。
所属していません StackOverflow