我在我的WCF接口类中为每个操作契约使用[ServiceKnownType(typeof(Document))]
。我想避免使用这个KnownType.Instead使用web.config中的DeclaredTypes。我可以获得有关如何在Web.config文件中配置DeclaredTypes的任何帮助。
答案 0 :(得分:3)
在配置中添加已知类型的选项仅适用于数据合同,而不适用于服务合同。如果Document
派生的类型始终相同(而不是System.Object
),则可以使用配置选项(MSDN处的更多信息)来实现,这看起来像什么像这样:
<configuration>
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="MyNamespace.DocumentBase, MyAssembly, Version=...">
<knownType type="MyNamespace.Document, MyAssembly, Version=..."/>
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
</configuration>
如果这不适用,则另一个选项是将此选项传递给DataContractSerializer
构造函数,您可以通过使用可应用于整个服务的某些行为来执行此操作。将DataContractSerializer
替换为NetDataContractSerializer
的帖子对您来说是一个很好的起点(而不是替换序列化程序,只需返回另一个DataContractSerializer
实例,但始终将typeof(Document)
添加到传递给它的已知类型。