15

いくつかの複合型を含む EF コードの最初のモデルがあります。Web API コントローラーの生成は問題なく動作しますが、http://blogs.msdn.com/b/yaohuang1/archive/2012/08/15/introducing-the-asp-net-で説明されているように Web API ヘルプ ページを生成すると、 web-api-help-page-preview.aspxの場合、サンプルは生成されません。表示されるエラー メッセージは次のとおりです。

フォーマッタ「JsonMediaTypeFormatter」を使用してメディア タイプ「application/json」のサンプルを生成しているときに例外が発生しました。例外メッセージ: 1 つ以上のエラーが発生しました。

残りのメディア タイプについても同じことが起こります。少し前に複雑な型とシリアル化に問題があったことは知っていますが、Json.NET フォーマッタが Web API にデフォルトで含まれているときに解決されました。

これは関連している可能性がありますか?他に同じ問題を抱えている人はいますか?何か案は?

4

1 に答える 1

34

私の推測では、これはおそらくモデルの参照ループが原因であると思われます。たとえば、Json フォーマッタに次の変更を加えて、ヘルプ ページを生成してみてください。サンプルが生成されるのを確認する必要があります。

        config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize; 
        config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;

また、上記の設定を行わないと、実際には実行時でも同様のエラーが表示されるはずです。

XmlFormatter と自己参照ループについては、こちらをご覧ください。

于 2013-02-22T17:24:43.320 に答える