4

私のAzureモバイルアプリケーションのバックエンドで奇妙な動作が発生しています。 私のコントローラのアクションがIQueryable<T>を返し、エンティティタイプは、ナビゲーションプロパティを持っている場合、それは500Azure MobileApp Controllerは、戻り値の型が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<ProductHierarchy> FromBrand(int brandId) 
    { 
     var hierarchies = Query().Where(hi => hi.Brand.OldBrandId ==brandId); 
     return hierarchies; 
    } 

私が解決策は私のローカルマシン上で実行されていると、すべてが正常に動作します私は紺碧の解決策を公開するときに、このアクションにリクエスト柯、しかし、FromBrandアクションはまた、一般的なメッセージ

"An error has occurred." 

で、500を返すために開始します私はアクションにリクエストを作るとき、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 

私はエラーを回避することができる2つの変更を見つけた:私はのBrandプロパティを飾るとき

1)のモデルJsonIgnoreは、Brandプロパティは無視され、すべては私がJsonIgnore atributeなしモデルのBrand財産を維持、List<ProductHierarchy>にアクションの戻り値の型を変更すると、すべてがあまりにも正常に動作

2)正常に動作しています。

これは、タイプに別のエンティティを持つプロパティがある場合に、この問題がシリアル化されて発生していると結論づけます。IQueryable<T>

同じ問題がある人が見つかりませんでしたので、シリアルナンバープロセスでWorksまたはInteractパッケージを探しているナゲットパッケージを調べ始めました。疑わしいのはNewtonsoft JsonとAutoMapperです。

誰もがこれらのパッケージのフードを見て、問題の原因を特定する方法についていくつかの手掛かりを持っていますか?

答えて

2

リレーションシップに関する多くの問題とエッジケースがあります。私はあなたが問題にぶつかったことに驚くことはありません。

一部のリソース:

  1. ブック - 関係上http://aka.ms/zumobook(特に第3章)
  2. ブログ: https://shellmonger.com/2016/05/27/30-days-of-zumo-v2-azure-mobile-apps-day-26-relationship-advice/
+0

おかげエイドリアン、私はあなたが言及した2つの参照に見てみましょうそれが役に立ったら結果を返してください。 –

+0

エイドリアン、材料のおかげで、それはパスを明らかにした。 私はエンティティから関係を取り除きます。なぜなら、私はそれをモバイル側で必要としないし、エンティティをフラットに保つからです。 –

関連する問題