問題タブ [datacontract]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - (DataContract とは対照的に) WCF の XmlSerialization の制限はありますか?
DataContract の代わりに XmlSerialization を選択した場合の主な制限など、後で後悔する可能性があるものはありますか? これまでは、スキーマ ファースト コントラクトの設計を採用してきました。
たとえば、パラメーター検査、セキュリティ強化などを行いたい場合、他の WCF 機能を追加しようとすると、XmlSerialization でロックインすることが問題になりますか?
c# - Datacontractsプロパティゲッターが2回実行されている
公開したい基本クラスのラッパーとして機能する一連のデータコントラクトがあります。簡単な例は次のとおりです。
最初にデータをマッサージする必要がある他のプロパティがいくつかあります(オブジェクトグラフを変換しており、循環参照から保護する必要があります)。
私たちが見ている問題は、このゲッターが2回起動することです。1回はサービス操作内で、もう1回はシリアル化中に起動します。これは2つの問題を引き起こしています:
- コレクションは2回実行されているため、コレクションに手動で追加します。コレクションは重複で埋められます。
- 2回目の実行中に例外がスローされた場合、それは操作のtry / catchの外部で発生し、障害をスローしません。このサービスは不可解なタイムアウトメッセージをスローします。エラーを確認する唯一の方法は、WCFトレースログを使用することです。
c# - データ コントラクトからエンティティ データ モデルを生成する
データ コントラクトをエンティティ データ モデルにすばやく変換する方法を見つけたいと考えています。
次のデータ コントラクトを検討してください。
このコードから ADO.NET Entity Data Model を自動的に作成する簡単な方法はありますか?
wcf - Silverlight WCF シリアル化 DataContract(IsReference=true) の問題
私は、NHibernate を使用するリポジトリにアクセスする WCF サービスにアクセスする Silverlight 3 UI を持っています。WCF での NHibernate の遅延読み込みの問題を克服するために、http: //timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspxで説明されているように、独自の DataContract サロゲートを使用しています。ここでは preserveObjectReferences = true を設定しています
私のモデルにはサイクルが含まれています (つまり、IList[Order] を持つ顧客)
サービスからオブジェクトを取得すると問題なく動作しますが、同じオブジェクトを wcf サービスに送り返そうとすると、次のエラーが発生します。
System.ServiceModel.CommunicationException はユーザー コードによって処理されませんでした Message=パラメーター http://tempuri.org/:searchCriteriaをシリアル化しようとしているときにエラーが発生しました。InnerException メッセージには「オブジェクト グラフ ...」が含まれており、参照が追跡されていない場合はシリアル化できません。IsReference プロパティを true に設定して DataContractAttribute を使用することを検討してください。
Silverlight では循環参照が問題になっているため、DataContract を [DataContract(IsReference=true)] に変更しようとしましたが、サービスからオブジェクトを取得しようとすると、次の例外が発生します。
System.ExecutionEngineException が処理されませんでした メッセージ = タイプ 'System.ExecutionEngineException' の例外がスローされました。内部例外:
何か案は?
wcf - 列挙型、DataContracts、およびWCFの質問
私はWCFを初めて使用し、簡単な質問があります...
私のDataContractクラスは、公開されているメソッドの1つからコンシューマーに列挙型を返します。
コンシューマーは、列挙型を確認し、その型の変数をインスタンス化できます。
ただし、サービスの列挙型に[DataContract]も[EnumMember]も提供していません。
私の質問は、なぜクライアントはまだそれを見ることができるのですか?ビジネスオブジェクトと一緒にシリアル化するには、[DataContract]にする必要があると思いました。
.net - DataContract 既知の型 - 配列を渡す
WCF操作を介して一般的なリストを渡すときに問題が発生しています。この場合、int の List があります。例 4 については、こちらの MSDNで説明されています。MSDN サンプルでは、次のように説明されていることに注意してください。
// これは、一般的な List が既知の型に追加された int[] と同等であるため、正常にシリアライズおよびデシリアライズされます。
上記は、DataContract です。
クライアント側では、次のように操作を呼び出しています。
また、生成された AccountData obj (WCF プロキシ) の装飾は次のとおりです。
例外は次のとおりです。
パラメータ http://tempuri.org/:myEntityをシリアライズしようとしてエラーが発生しました。InnerException メッセージは、データ コントラクト名 'ArrayOfint: http://schemas.microsoft.com/2003/10/Serialization/Arrays ' を持つ 'Type Generic List' でした。静的に知られていないタイプを既知のタイプのリストに追加します
c# - エンドポイントを呼び出す前に、エンドポイントでサポートされているWCFメソッドを確認できますか?
WCFサービスコントラクトにバージョン管理の問題があり、操作のために呼び出される多くのエンドポイントの1つで、コントラクトから1つのメソッドが欠落しています。
私の質問は、コマンドを呼び出す前に、クライアントでコマンドが使用可能であることを確認するにはどうすればよいですか?
私は試した:
残念ながら、これは呼び出し元のアプリからのコントラクトを使用しており、エンドポイント自体の実装については実際には説明していません。その結果、エンドポイントがコマンドの実装に失敗した場合でも、trueを返します。
wcf - WCF DataContractSerializer の動作
DataContractSerializer を使用すると、異常な動作が見られます。次のようにメッセージ コントラクトを定義しました。
次のような XML メッセージを送信しています。
私のサービスは、期待どおりにこの XML を逆シリアル化します。私のサービス内では、DataContractSerializer を使用して XML 文字列を作成していますが、ここで奇妙なことが起こります。私は次のようにシリアライザーを使用しています:
これが完了すると、outputMessage に次の XML が含まれます。
言うまでもなく、元の XML メッセージを受信することを期待しているものは、これを解析できません。だから私は2つの質問があると思います:
- DataContractSerializer が余分な外部ノードを XML 出力に追加するのはなぜですか?
- これをやめる方法はありますか?
ありがとう。
これはおそらく.NET 4を使用していることを追加する必要があります。
c# - C# の継承 DataContract 派生型
msdn:datacontracts をよく読んでみましたが、以下が機能しない理由がわかりません。ここで何が問題なのですか?ExtendedCanadianAddress が datacontract シリアライザーによって認識されないのはなぜですか?
タイプ 'XYZ.ExtendedCanadianAddress' とデータ コントラクト名 'CanadianAddress: http://tempuri.org/Common/Types ' は想定されていません。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加することにより、静的に認識されていない型を既知の型のリストに追加します。
与えられた: