Если действие моего контроллера возвращает IQueryable, а тип сущности имеет свойство навигации, оно возвращает 500.Простой пример:
Модель
Код: Выделить всё
public class ProductHierarchy : EntityData
{
public string Name { get; set; }
public string Description { get; set; }
public DateTime ValidFrom { get; set; }
public DateTime ValidTo { get; set; }
public string BrandId{ get; set; }
[ForeignKey("BrandId")]
public virtual Brand Brand { get; set; }
public ProductStatus Status { get; set; }
public int CreatedBy { get; set; }
public int ModifiedBy { get; set; }
}
Код: Выделить всё
[HttpGet]
[Route("api/ProductHierarchies/FromBrand/{brandId}")]
public IQueryable
FromBrand(int brandId)
{
var hierarchies = Query().Where(hi => hi.Brand.OldBrandId ==brandId);
return hierarchies;
}
"Произошла ошибка".
Кроме того, журналы Azure отображают следующее исключение, когда я делаю запрос на действие:
Код: Выделить всё
Detailed Error Information: Module
__DynamicModule_Microsoft.Owin.Host.SystemWeb.OwinHttpModule,Microsoft.Owin.Host .SystemWeb, Version=3.0.1.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35_19e9f0a3-023d-4d8b-83ef- 180a415e7921 Notification PreExecuteRequestHandler Handler ExtensionlessUrlHandler-Integrated-4.0 Error Code 0x00000000
- Когда я украшаю клеймо< /code> модели с JsonIgnore, свойство Brand игнорируется и все работает нормально
Когда Я меняю тип возвращаемого действия на List
, сохраняя свойство Brand модели без атрибута JsonIgnore, тоже все работает нормально.
< /li>
Я не нашел никого, у кого была бы такая же проблема, поэтому я начал изучать свои пакеты nuget в поисках того, какой пакет работает или взаимодействует с процессом сериализации, и все мои подозрительные над Newtonsoft JSON и AutoMapper.
Кто-нибудь знает, как заглянуть под капот этих пакетов и определить причину проблемы?
Подробнее здесь: https://stackoverflow.com/questions/406 ... iqueryable