在Web API </type>中,XmlMediaTypeFormatter抛出<type>不是预期的异常

时间:2013-12-04 20:45:20

标签: asp.net-web-api xml-serialization asp.net-mvc-5 mediatypeformatter

我正在使用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或导航引用。

有没有人有任何线索?

感谢。

0 个答案:

没有答案