質問

先月の間、私は誤った休憩サービスがサービススタックと呼ばれている奇妙な動作に気づいた。

すべてが働いているようです、そしてそれから新しい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)の継承を使用しないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top