1

JSON データを WCF サービスとの間で受け渡すために、戻り値の型とメソッドのパラメーターの型をSystem.ServiceModel.Channels.Messageのものに置き換えました。

これは回避策です。そうしないと、デフォルトの DataContractJSONSerializer が使用され、DTO オブジェクトの DataContract 属性の IsReference 設定が true に設定されているため、例外がスローされますが、これはこのシリアライザーではサポートされていません。

たとえば、新しい Read メソッドは次のようになります。

public Message ReadCars()
{
    ItemInfoList<CarDto> cars = this.ReadCars(this.jsonItem);
    string jsonString = JsonConvert.SerializeObject(cars);

    return WebOperationContext.Current.CreateTextResponse(jsonString,
                "application/json; charset=utf-8",
                Encoding.UTF8);
}

すべてが機能していますが、次のようなメソッドに Car パラメーターを渡す必要がある場合に問題が発生します。

public Message CreateCar(Message car)

AJAX リクエストを使用して JavaScript からサービスを呼び出し、JSON データを渡します。

問題は、この JSON データを解析して CarDTO オブジェクトに戻す方法です。

問題は、メッセージがその本文を JSON ではなく XML として保存しているため、実際のリクエスト データを取得できないことです。

PS デフォルトのシリアライザーをカスタムのシリアライザーに置き換えたくありません。オブジェクトを手動で JSON にシリアル化し、メッセージを使用してそれらを送信し、メッセージからオブジェクトを取得したいだけです (問題のある手順)。

4

0 に答える 0