Когда я использовал REST для вызова службы WCF, метод пропускается со следующей ошибкой:
Тело ответа представляет собой поток байтов.
Смотрите сервисную документацию для
разрешенные типы контента.
Я занимаюсь размещением объектов в памяти, а затем пытаюсь их сериализовать в виде строки JSON. Для этого у меня есть интерфейс к моему контракту на обслуживание:
[ServiceContract]
public interface IDashboardService
{
[WebGet(UriTemplate = "dashboard/group/id/{id}", ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
Stream GetGroupById(string id);
}
И в моем сервисном контракте переопределяет пропускаемый метод:
public class Dashboard : GroupBase, Contracts.IDashboardService
{
public Dashboard() : base()
{
if (!ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated)
throw new WebException("Unauthorized: Class: Dashboard, Method: Dashboard()",
System.Net.HttpStatusCode.Forbidden);
}
public override System.IO.Stream GetGroupById(string id)
{
return base.GetGroupById(id);
}
}
Вот базовый метод:
public virtual Stream GetGroupById(string id)
{
byte[] bytes = null;
var groupId = System.Convert.ToInt32(id);
var serializer = new JavaScriptSerializer();
switch (groupId)
{
case 0: // regions
var regions = GroupRepository.GetAllRegions();
bytes = Encoding.UTF8.GetBytes(serializer.Serialize(regions));
break;
case 1: // customers
var customers = CustomerRepository.GetAllCustomers();
bytes = Encoding.UTF8.GetBytes(serializer.Serialize(customers));
break;
}
return new MemoryStream(bytes);
}
Есть идеи, как я могу заставить это работать? Спасибо.