私はオブジェクトがWebサービスを通じて公開されているサードパーティAPIを使用しています。残念ながら、APIにはオブジェクトのIDフィールドが0の場合にいくつかのプロパティにアクセスしようとすると例外がスローされるなどいくつかの癖があります。WCFサービスがクライアント上のオブジェクトプロパティを検査しないようにすることはできますか?
したがって、サーバー上にオブジェクトの有効なインスタンスを作成し、WCFサービスクライアント。この問題は、クライアントがオブジェクトを受け取ったときに発生します。どんな理由であれ、サービスはの前にのオブジェクトのそれぞれのプロパティを検査して、クライアント上にそれを設定しているようです。だから、オブジェクトはクライアントが受け取ったときに例外をスローしていますが、私はそれらで何かできるようになります。何が起こっているかを示すための簡単なコード例を示します。サービスで
public class ExposedClass {
public int Id { get; set; }
List<OtherClass> _other;
public List<OtherClass> Other {
get {
if (Id == 0) throw new Exception("Can't access field 'other' if object not initialized");
return _other;
}
}
}
:
[ServiceContract]
public MyService {
[OperationContract]
public ExposedClass GetThing() {
ExposedClass c = new ExposedClass();
c.Initialize(); // makes the Id field valid
return c;
}
}
とクライアント:
[TestMethod]
public void GetThingFromService {
var svcClient = new MyClient();
var c = svc.GetThing(); // exception thrown here on client
Assert.IsNotNull(c);
}
任意のアイデア?
クライアントにはどのような例外がありますか? –
恐ろしい "接続が予期せず閉じられました"というエラー。 –