У меня есть простой прототип службы WCF, основанный на классах POCO Entity Framework.Когда я запускаю один из представленных методов без указания формата ответа, он возвращает ожидаемые данные в формате XML в браузер.Однако, если я укажу «ResponseFormat = WebMessageFormat.Json», данные не будут возвращены в браузер.Если я пытаюсь использовать Fiddler, чтобы узнать больше о том, что происходит, я обнаружил, что ответ на запрос браузера «Ошибка ReadResponse (): сервер не возвратил ответ на этот запрос».
ВотДоговор на обслуживание:
[ServiceContract]
public interface ITimeService
{
[OperationContract]
[WebGet(UriTemplate = "/Customer?ID={customerID}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
Customer GetCustomer(string customerID);
[OperationContract]
[WebGet(UriTemplate = "/Customers", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
List<Customer> GetCustomers();
[OperationContract]
[WebGet(UriTemplate = "/Tasks/?CustomerID={customerID}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
List<Task> GetTasks(string customerID);
}
И реализация:
public Customer GetCustomer(string customerID)
{
var ID = new Guid(customerID);
var context = new PinPointTimeEntities();
var customer = context.Customers.Include("TimePeriods").Include("Tasks").Where(c => c.ID == ID).SingleOrDefault<Customer>();
return customer;
}
public List<Customer> GetCustomers()
{
var context = new PinPointTimeEntities();
var customers = context.Customers.ToList();
return customers;
}
public List<Task> GetTasks(string customerID)
{
var ID = new Guid(customerID);
var context = new PinPointTimeEntities();
var tasks = context.Tasks.Include("TimePeriods").Where(c => c.CustomerID == ID).ToList();
return tasks;
}
Я попробовал несколько предложенных решений, но безуспешно.Я представляю, что это простая настройка или что-то, что требуется.Что мне нужно сделать, чтобы данные были успешно возвращены в формате json?