Visual studio 2010 Web API中未序列化只读模型属性

Visual studio 2010 Web API中未序列化只读模型属性,visual-studio-2010,asp.net-mvc-4,asp.net-web-api,Visual Studio 2010,Asp.net Mvc 4,Asp.net Web Api,根据标题,我发现我的只读模型属性在我的WebAPI项目中没有序列化。MVC4WebAPI,VS2010 我看到过很多这样的帖子,说MVC4WebAPI测试版不支持只读属性的JSON序列化。但许多其他参考文献指出,最终版本使用了JSON.NET而不是DataContractJsonSerializer,因此问题应该得到解决 这个问题解决了没有??如果不是的话,我是不是为了获得序列化而被迫加入假setter 更正,它似乎与JSON一起工作(抱歉!),但XML显示了这个问题。所以这个问题和以前一样,

根据标题,我发现我的只读模型属性在我的WebAPI项目中没有序列化。MVC4WebAPI,VS2010

我看到过很多这样的帖子,说MVC4WebAPI测试版不支持只读属性的JSON序列化。但许多其他参考文献指出,最终版本使用了JSON.NET而不是DataContractJsonSerializer,因此问题应该得到解决

这个问题解决了没有??如果不是的话,我是不是为了获得序列化而被迫加入假setter



更正,它似乎与JSON一起工作(抱歉!),但XML显示了这个问题。所以这个问题和以前一样,只是在XML序列化的上下文中。

默认的JSON序列化程序现在是JSON.NET。因此,只读属性序列化应该可以工作,而无需执行任何操作

对于XML,在4.5中,我们将此标志添加到DataContractSerializer:

你应该能够写这样的东西:

config.Formatters.XmlFormatter.SetSerializer(myType, new DataContractSerializer(myType, new DataContractSerializerSettings() { SerializeReadOnlyTypes = true });

将此代码放在由
全局配置调用的函数中。在
应用程序启动中配置
。默认情况下,这将是
WebApiConfig.Register()

对不起,当我看到默认XML输出中缺少它时,我认为JSON中也存在同样的问题。关于XML问题有什么想法吗?有没有在.NET4&VS2010中提供的解决方案?嗯,我想不出一个适合你的好方案。我认为在4.0中最好的方法是添加私有setter,并用[DataContract]/[DataMember]标记类型/属性,看看这是否适合您。公共setter也可以工作。只需添加,
DataMember
在.net4和vs 2010中没有帮助:即使请求了xml,该类仍将使用json序列化。注意:只有在从构造函数初始化readonly属性并且它是唯一可用的构造函数时,这才适用于json.Net。在其他情况下,您需要解决Joanna,我认为他指的是不带setter的仅获取属性,而不是只读字段。是的,我所说的只读属性是指不带setter的属性。当然,它可以由只读变量或常量支持,但这是一个实现细节。