15

我有一个包含一些复杂类型的 EF 代码优先模型。生成 Web API 控制器没有任何问题,但是在生成 Web API 帮助页面时,如http://blogs.msdn.com/b/yaohuang1/archive/2012/08/15/introducing-the-asp-net-中所述web-api-help-page-preview.aspx则不会生成样本。给出的错误信息是:

使用格式化程序“JsonMediaTypeFormatter”为媒体类型“application/json”生成样本时发生异常。异常消息:出现一个或多个错误。

其他媒体类型也会发生同样的事情。我知道前段时间复杂类型和序列化存在问题,但是当 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 回答