Mam klasę kontrolera Web api i wywołuje metodę klasy pośredniczącej generowane z WSDL z kontrolera api, i zwracam obiekt typu zdefiniowany w klasie proxy WSDL.
ale zwracane xml / json zawiera prywatnych członków klasy proxy
prywatni członkowie są
private string companyField;
private string soldBPField;
private string fromDateField;
private string toDateField;
private long succStatusField;
a zwróconym xml jest:
<companyField>700</companyField>
<soldBPField>999000353</soldBPField>
<fromDateField>01-01-2012</fromDateField>
<toDateField>01-01-2013</toDateField>
zwrócony json jest również podobny
Zmieniłem formatator xml w pliku global.asax w następujący sposób:
var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;
to zmieniło kod XML, który powrócił do:
<company>700</company>
<soldBP>999000353</soldBP>
<fromDateField>01-01-2012</fromDate>
<toDate>01-01-2013</toDate>
ale json wrócił nadal zawiera nazwy zmiennych prywatnych
Czy ktoś może mi w tym pomóc?
Odpowiedzi:
13 dla odpowiedzi nr 1Czy Twoje typy są oznaczone jako [Serializable]
? Serializowalny oznacza, że serializer powinien serializować wszystkie pola - prywatne lub publiczne. Spróbuj usunąć Serializable
lub użyj tej linii, aby zatrzymać procesor JSON rozpoznawania atrybutu:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();