내 azure 모바일 앱 백엔드가 이상한 동작을하고 있습니다. (500)Azure MobileApp Controller는 반환 유형이 IQueryable 인 경우에만 500을 반환합니다.
간단한 예를 들어 내 컨트롤러 액션은 IQueryable<T>
을 반환하고 개체 유형은 탐색 속성은 반환이있는 경우 :
모델
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<ProductHierarchy> FromBrand(int brandId)
{
var hierarchies = Query().Where(hi => hi.Brand.OldBrandId ==brandId);
return hierarchies;
}
내가 애 솔루션은 내 로컬 컴퓨터에서 실행이 행동에 요청, 모든 것이 내가 푸른에 솔루션을 게시 그러나 때, 잘 작동의 FromBrand
조치는 일반 메시지 또한
"An error has occurred."
로, 500을 반환하기 시작 나는이 두 가지 변화를 발견했습니다
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
오류 방지 할 수 있습니다 :
1 나는의 Brand
속성을 장식 할 때) 나는 작업에 요청을 할 때, 푸른 로그는 나에게 다음과 같은 예외를 보여줍니다 함께 모델 JsonIgnore
는 Brand
속성은 무시하고 모든 것을 내가 JsonIgnore
atribute없이 모델의 Brand
속성을 유지 List<ProductHierarchy>
에 액션 반환 형식을 변경하면 모든 것이 너무 잘 작동
2) 잘 작동한다.
T
에 다른 엔터티가있는 유형의 속성이있을 때이 문제가 계속 발생하고 있다고 결론 내릴 수 있습니다. IQueryable<T>
같은 문제가있는 사람을 찾지 못했기 때문에 직렬 패키지에 대한 작업 또는 상호 작용을 찾는 내 너겟 패키지를 살펴보기 시작했습니다. 의심스러운 것은 Newtonsoft Json과 AutoMapper에 있습니다.
누구나 이러한 패키지의 내부를 살펴보고 문제의 근원을 파악하는 방법에 대한 단서가 있습니까?
감사합니다 애드리안, 난 당신이 언급 한 두 개의 참조에 살펴볼 것이다 도움이된다면 결과와 함께 돌아 오십시오. –
Adrian, 소재 덕분에 경로가 명확 해졌습니다. 엔티티에서 릴레이션을 제거 할 것입니다. 엔티티가 모바일 측에서 필요하지 않으므로 앤티 티를 플랫하게 유지합니다. –