我有一个 wcf 数据服务和一个正常的 rest wcf 服务。两种服务都返回相同的实体对象。
[DataContract]
public partial class MyEntity
{
#region Primitive Properties
[DataMember]
public virtual long ID
{
get;
set;
}
....
正常的 rest wcf 服务使用以下服务契约:
[ServiceContract]
public interface MyService
{
[OperationContract]
[WebGet(UriTemplate="MyEntity/{id}",ResponseFormat=WebMessageFormat.Json)]
public MyEntity GetMyEntity(string id)
}
而 wcf 数据服务将 long 值作为字符串返回:
{{"id": ... ,"uri": ... ,"type":"Model.MyEntity"},"ID":"865176660053852161"}
MyService ServiceContract 返回 long as number:
{ "ID":865176660053852161 }
似乎 wcf 数据服务和“正常”休息服务使用两种不同的序列化机制。
问题是:我的客户端应用程序使用 JavaScript,因此无法处理 64 位数字。我本来预计,“正常”休息服务也会返回 64 位数字作为字符串。
- 在序列化/反序列化过程中,我在哪里可以将数字转换为字符串?
- 万一有人知道:为什么 wcf 数据服务/基于休息的 wcf 之间的行为不同?
为了保持一致性,我希望在服务器端的序列化过程中进行转换,但我不知道这是否可行。