我正在使用MVC 5编写诊断网站,该网站将对多个后端服务发出任意请求,并在浏览器中以Json或XML报告结果。
由于结果类型很多,我将一个“object”类型的变量传递给Ok(content)方法。
这在我请求Json输出时工作正常,但在请求xml输出时在XmlMediaTypeFormatter中失败。
是个例外The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
内部异常是
Type '<type>' with data contract name '<schema-address>' is not expected.
Consider using a DataContractResolver or add any types not known statically
to the list of known types - for example, by using the KnownTypeAttribute
attribute or by adding them to the list of known types passed to
DataContractSerializer.
这似乎发生在任何不是简单纯对象的返回类型上,例如,字符串返回类型将正确显示,但即使是具有2个整数属性和2个DateTime属性的简单类也会以这种方式失败。使用调试器挖掘代码显示对HttpRequestMessage.CreateResponse的调用知道正文内容的类型是什么,如果尝试像this link那样运行它,它就可以正常工作。
Google搜索此错误会导致对实体框架导航链接和代理进行大量讨论,但这些都不适用,因为这些是简单的返回类,不涉及EntityFramework或导航引用。
有没有人有任何线索?
感谢。