クライアントから渡されたパラメーターを指定して、メソッドの WebResponseFormat を動的に変更する方法はありますか? WebResponseFormat をデフォルトで XML に設定していますが、クライアントに形式を JSON または XML として指定できるようにしたいと考えています。何も指定されていない場合は、デフォルトで XML を使用します。
現在、私は次のことを行っています:
[WebGet(UriTemplate = "objects", BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
List<SampleObject> GetObjects();
ユーザーは次の方法で呼び出すことができます。
http://localhost/rest/myservice/objects
次に、次のようにしてフォーマットを指定できます。
http://localhost/rest/myservice/objects?format=json
問題は、次の方法で応答コンテンツ タイプを設定しようとしたときです。
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
これは XML を返すだけですが、ブラウザーは応答を JSON としてシリアル化するのではなく、JSON オブジェクトのように処理しようとします。
Stream を戻り値として使用し、応答を自分でシリアル化する以外に、.NET 3.5 でもこれは可能ですか? そうでない場合、より良い解決策はありますか?