Я думаю, что с сериализацией что-то не должно быть правильно. Мой класс:Ответ WCF возвращается как текст/html, а не xml
[DataContract]
public class User
{
[DataMember]
public int id { get; set; }
[DataMember]
public string user_id { get; set; }
...
public User() { }
public User(int id, string user_id, ...)
{
this.id = id;
this.user_id = user_id;
...
}
}
[DataContract]
public class UserCollection
{
[DataMember]
public List<User> users { get; set; }
[DataMember]
public int count { get; set; }
[DataMember]
public int page { get; set; }
public UserCollection() { }
public UserCollection(List<User> users, int count, int page)
{
this.users = users;
this.count = count;
this.page = page;
}
}
API-интерфейс вызова:
[WebGet(UriTemplate = "?promotion_id={promotion_id}&page={page}&format={format}")]
public UserCollection GetAllUsers(string promotion_id, string page, string format)
{
if (string.Equals("json", format, StringComparison.OrdinalIgnoreCase))
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
UserFactory factory = new UserFactory();
return factory.GetUsersByPromotionID(int.Parse(promotion_id), (int.Parse(page) - 1) * 50, 50);
}
Сгенерированный источник:
<UserCollection xmlns="http://schemas.datacontract.org/2004/07/API.Library.Resources" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><count>0</count><page>0</page><users/></UserCollection>
Он не отображает XML на странице, потому что это говорит тип ответ текст/html. Есть идеи?
Я использую автоматический выбор формата: –
Это зависит от HTTP-запроса, отправленного клиентом. См. [Форматирование веб-HTTP WCF] (http://msdn.microsoft.com/en-us/library/ee476510.aspx). – Gene
Я просто обращаюсь к нему в браузере. Заголовок запроса говорит: Принять: текст/html, application/xhtml + xml, application/xml; q = 0.9, */*; q = 0.8 –