我有一个包含一些复杂类型的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中时,它就被解决了.
这可以相关吗?任何人有同样的问题吗?有任何想法吗?
解决方法
我的猜测是,这最有可能是由于您的模型所引用的循环.例如,您可以通过对Json格式化程序进行以下更改来尝试生成帮助页面.您应该看到样品生成:
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize; config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
此外,即使在运行时,您也应该看到类似的错误,如果您没有进行上述设置.
对于XmlFormatter和自引用循环,您可以查看here.