ExceptionsJSONService という WCF サービスがあります。私のソリューションで定義されている他のすべてのサービスとは異なり、何らかの理由で JavaScript でクライアント側をインスタンス化することはできません。
これは失敗します:
var service = new ExceptionsJSONService();
オブジェクトが必要です。なぜこれが起こるのかを理解しようとしており、プロジェクト全体ですべての定義をチェックしましたが、すべてがうまく見え、定義した他のすべてのサービスと一致しています (すべて動作します)。
次に、svclog ファイルを確認したところ、エラーが見つかりました。例外の種類は次のとおりです。
System.Runtime.Serialization.InvalidDataContractException、System.Runtime.Serialization、バージョン = 4.0.0.0、カルチャ = ニュートラル、PublicKeyToken = b77a5c561934e089
例外メッセージは次のとおりです。
タイプ 'System.Data.Entity.DbSet`1[CCMModel.AttachmentDoc]' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。サポートされているその他の型については、Microsoft .NET Framework のドキュメントを参照してください。
CCMModel は名前空間で、AttachmentDoc は私のエンティティの 1 つです。ただし、問題は AttachmentDoc にはありません。エンティティのリストをアルファベット順に調べているだけです。エンティティの名前を Attachments から RAttachments に変更したところ、AttachmentDoc で例外をスローするようになりました。
問題は、コードのどこにも EF エンティティをシリアル化しようとしないことです。私がシリアル化するすべてのクラスには DataContracts があります。この 2 つが関連していると思われる理由は、Open ServiceHost 'ExceptionsJSONService' が svclog に表示された直後に例外が発生するためです。
誰もこれに遭遇しましたか?