Я создаю веб-сервис WCF API. Моя проблема в том, что некоторые методы возвращают ответ 200 / OK, но заголовки и тело пустые.
При настройке веб-службы я создал модель данных сущности ADO.NET. Я выбрал ADO.NET DbContext Generator, когда добавил элемент генерации кода. В документе Model.tt я изменил HashSet и ICollection на List. Я создал свой сайт.
Раньше было так, что когда я кодировал метод для возвращения списка сущностей (например, List<Customer>
или List<Employee>
в базе данных Northwind), он работал нормально. Со временем я не смог вернуть Список ни одного из них, и мог получить только одну сущность. Теперь дошло до того, что я могу вернуть List<string>
или List<int>
, но не List или экземпляр какой-либо сущности. Когда я пытаюсь получить List<AnyEntity>
, ответ 200 / OK, но заголовки и тело ответа пусты.
Я попытался использовать отладчик и веб-консоль Firefox. Используя WC от FF, я мог получить только «неопределенный» код состояния. Я не уверен, куда идти отсюда.
РЕДАКТИРОВАТЬ: пытаясь извлечь все области из базы данных, я делаю это:
[WebGet(UriTemplate = "areas")]
public List<a1Areas> AllAreas()
{
return context.a1Areas.ToList();
}
Буду признателен за любые другие способы отладки этого. Заранее спасибо.
Нашел ответ, спасибо Мерлин!
В моем файле Global.asax я забыл закомментировать две строки, которые заботились о прокси и избавились от моего объекта контекста. Код ниже:
void Application_BeginRequest(object sender, EventArgs e)
{
var context = new AssignmentEntities();
context.Configuration.ProxyCreationEnabled = false;
HttpContext.Current.Items["_context"] = context;
}
void Application_EndRequest(object sender, EventArgs e)
{
var context = HttpContext.Current.Items["_context"] as AssignmentEntities;
if (context != null)
{
context.Dispose();
}
}