12

Web API コントローラー クラスがあり、WSDL から生成されたプロキシ クラスのメソッドを Web API コントローラーから呼び出し、WSDL プロキシ クラスで定義された型のオブジェクトを返します。

しかし、返された xml/json にはプロキシ クラスのプライベート メンバーが含まれています。

プライベートメンバーは

    private string companyField;

    private string soldBPField;

    private string fromDateField;

    private string toDateField;

    private long succStatusField;

返される xml は次のとおりです。

<companyField>700</companyField>
<soldBPField>999000353</soldBPField>
<fromDateField>01-01-2012</fromDateField>
<toDateField>01-01-2013</toDateField>

返されるjsonも同様です

global.asax の xml フォーマッタを次のように変更しました。

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;

これにより、返される XML が次のように変更されました。

<company>700</company>
<soldBP>999000353</soldBP>
<fromDateField>01-01-2012</fromDate>
<toDate>01-01-2013</toDate>

ただし、返されたjsonにはまだプライベート変数の名前が含まれています

誰でもこれで私を助けることができます

4

1 に答える 1

18

あなたのタイプは としてマークされてい[Serializable]ますか? Serializable は、シリアライザーがすべてのフィールド (プライベートまたはパブリック) をシリアル化する必要があることを意味します。この行を削除するSerializableか、または使用して、JSON フォーマッターが属性を認識しないようにしてください。

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
于 2013-06-27T18:24:29.953 に答える