1

私はこれを引き起こしている可能性があるものに完全に迷っています。

ASP.Net MVC 4 RCアプリケーションがあり、WebAPIコントローラーのセットがあります。IListに子オブジェクトのセットを含むオブジェクトを返そうとしています。オブジェクトを要求するたびに、デバッガーで目立った例外がスローされることなく、ブラウザーで500エラーが返されます。Application_Errorハンドラーをglobal.asaxに配置しようとしましたが、そこでもエラーはキャッチされません。

リストが実際のデータベース関係であるか、ハードコードされた文字列のリストであるかは関係ありません。どちらの場合も、要求は失敗します。リストをnullに設定すると、リクエストは成功します。

リストを削除すると、リクエストは成功し、オブジェクトのXML(またはJSON)表現を取得します。

私もこの行を試しました-

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

実際の例外をキャプチャし、それでも何も返さないようにするため。

これが現在のオブジェクトです

public class Authority : IEntity
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Address1 { get; set; }
    public virtual string Address2 { get; set; }
    public virtual string City { get; set; }
    public virtual string County { get; set; }
    public virtual string State { get; set; }
    public virtual string ContactPostalCode { get; set; }

    //public virtual IList<PostalCode> PostalCodes { get; set; }
    public virtual IList<string> RandomTrash { get; set; }

    public VPA()
    {
        //PostalCodes = new List<PostalCode>();
        RandomTrash = new List<string> {"foo"};
    }
}

コメントアウトされたPostalCodesコレクションに注意してください。これは実際の多対多のデー​​タベース関係です。コメントアウトしてダミーの「RandomTrash」コレクションに置き換えましたが、失敗は同じようです。

どういうわけかシリアル化の失敗だと感じていますが、どうすれば回避できるのかわかりません。それが助けになるなら、私はORMとしてNHibernateを使用しています。

誰かがこれを見たことがありますか?

4

1 に答える 1

1

誰かが再びこれに遭遇した場合に備えて、私自身の質問に答えます。

結局、ループ内のグリッドに続くシリアル化になりました。修正するために、モデルの1つで各ループ参照に2つの属性を追加しました。

[IgnoreDataMember]XMLシリアライザーの場合[JsonIgnore]JSON.Netのシリアライザーの場合。

これらのPostalCodeクラスをIListプロパティに追加しました。

より良い解決策があるかもしれません。これの欠点は、APIが一方的になることです。当局をリクエストしてすべての郵便番号を取得することはできますが、郵便番号をリクエストしてすべての郵便番号を取得することはできません。

于 2012-07-10T00:47:31.463 に答える