私は wcf データ サービスと通常の残りの wcf サービスを持っています。どちらのサービスも同じエンティティ オブジェクトを返します。
[DataContract]
public partial class MyEntity
{
#region Primitive Properties
[DataMember]
public virtual long ID
{
get;
set;
}
....
通常の残りの wcf サービスは、次のサービス コントラクトを使用します。
[ServiceContract]
public interface MyService
{
[OperationContract]
[WebGet(UriTemplate="MyEntity/{id}",ResponseFormat=WebMessageFormat.Json)]
public MyEntity GetMyEntity(string id)
}
一方、wcf データ サービスは long 値をstringとして返します。
{{"id": ... ,"uri": ... ,"type":"Model.MyEntity"},"ID":"865176660053852161"}
MyService ServiceContract は long as numberを返します:
{ "ID":865176660053852161 }
wcf データ サービスと「通常の」残りのサービスは、2 つの異なる種類のシリアル化メカニズムを使用しているようです。
問題: 私のクライアント アプリは JavaScript を使用しているため、64 ビットの数値を処理できません。「通常の」残りのサービスも64ビットの数値を文字列として返すと予想していました。
- シリアル化/逆シリアル化プロセス中に数値を文字列に変換できる場所はどこですか?
- 誰かが知っている場合:wcfデータサービス/残りのwcfで動作が異なるのはなぜですか?
一貫性を保つために、サーバー側でのシリアル化プロセス中に変換することをお勧めしますが、これが実現可能かどうかはわかりません。