こんにちは、私はwebHttpEndpointBehavior
Sitecore 6 で WCF サービスを利用しており、Glass Mapper を使用してアイテムを読み取ります。Glass Mapper は Castle ライブラリに依存しています。
それはうまくいっていますが、私は契約のようないくつかの方法を持っています:
[OperationContract]
[WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<Shade> GetAllShades(int columns, int rows);
クラスのリストを JSON 形式で返そうとすると、SvcTraceViewer.exe を使用してサービスをデバッグしているときに、次のエラーが見つかりました。
パラメータ :GetFamilyShadesResult をシリアル化しようとしてエラーが発生しました。InnerException メッセージは、「Type 'Castle.Proxies.ShadeProxy' with data contract name 'ShadeProxy: http://schemas.datacontract.org/2004/07/Castle.Proxies ' は想定されていません。DataContractResolver の使用を検討するか、既知の型のリストに静的に認識されていない型を追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加します。詳細については、InnerException を参照してください。
この問題を解決するにはどうすればよいですか? Castle.Proxies.ShadeProxy
は Castle の下の動的クラスであり、使用できません KnownTypeAttribute
。
実際、JSON.net ライブラリを作成して結果を文字列として返すと、すべて正常に動作します。