我有这样一个方法:

public JObject Get(int id)
        {
            return new JObject(new JProperty("Test", "Test"));
        }

如果我请求json,它可以正常工作,但是如果我请求xml,我会从web api框架中得到一个http错误代码500(没有例外)。
似乎xmlformatter认为他可以编写json。
我可以用:
bool test = GlobalConfiguration.Configuration.Formatters.XmlFormatter.CanWriteType(typeof(JArray));
            bool test2 = GlobalConfiguration.Configuration.Formatters.XmlFormatter.CanWriteType(typeof(JObject));
            bool test3 = GlobalConfiguration.Configuration.Formatters.XmlFormatter.CanWriteType(typeof(JProperty));
            bool test4 = GlobalConfiguration.Configuration.Formatters.XmlFormatter.CanWriteType(typeof(JValue));

它总是返回“true”。
我不想删除xmlformatter,但服务器抛出一个http错误500是不可接受的,我无法生成该错误并解决它。
最好是xmlfatter可以序列化对象…

最佳答案

DataContractSerializer不支持匿名/动态类型(甚至不支持泛型“对象”)。这就是为什么它没有被序列化为xml。
如果要进行XML序列化,则必须使用强类型对象。

关于xml - ASP.NET Web API:XMLFormatter认为他可以编写Json对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11047683/

10-09 07:58