C# WCF DataContractSerializer和XAML命名空间

C# WCF DataContractSerializer和XAML命名空间,c#,wcf,xaml,workflow-foundation-4,datacontractserializer,C#,Wcf,Xaml,Workflow Foundation 4,Datacontractserializer,我正在向包含Windows工作流定义的WCF服务发送对象,但在尝试反序列化自定义活动时,反序列化程序出错 当我以以下形式定义活动的名称空间时,这一点以前是有效的: xmlns:tta=“clr命名空间:MyNamespace;assembly=MyAssembly” 但出于可维护性原因,我现在已使用程序集属性将我的活动名称空间映射到XAML名称空间: [assembly: XmlnsPrefix("http://schemas.product.com/activities/", "tta")]

我正在向包含Windows工作流定义的WCF服务发送对象,但在尝试反序列化自定义活动时,反序列化程序出错

当我以以下形式定义活动的名称空间时,这一点以前是有效的:

xmlns:tta=“clr命名空间:MyNamespace;assembly=MyAssembly”

但出于可维护性原因,我现在已使用程序集属性将我的活动名称空间映射到XAML名称空间:

[assembly: XmlnsPrefix("http://schemas.product.com/activities/", "tta")]
[assembly: XmlnsDefinition("http://schemas.product.com/activities/", "MyNamespace")]
因此,我的xaml名称空间看起来像:
xmlns:tta=”http://schemas.thacktech.com/activities/“
我的活动声明为:

由于此更改,我现在收到
NetDispatcherFaultException
,内容如下:


格式化程序在尝试反序列化消息时引发异常:尝试反序列化参数时出错。InnerException消息是“元素”包含类型中的数据,该类型映射到名称“Naptime,版本=1.0.0.0,区域性=中性,PublicKeyToken=null:MyNamespace.Naptime”。反序列化程序不知道映射到此名称的任何类型。考虑在DATACONTractRever中更改DeaveCaveNoRever的实现,以返回名称为“MyMaMeSpult.NAPTime'和命名空间的NAPTIME,版本= 1.0.0.0,Sule=中立,PuxKiTeCue= NULL”的非空值。有关更多详细信息,请参阅InnerException

问题

  • 为什么反序列化程序在使用clr命名空间语法时成功地进行了类型解析,但在使用url样式语法进行命名空间声明时失败了

  • 类型解析器似乎完全误解了类型,将类名列为名称空间。为什么会这样

  • 我如何正确地实现这一点


  • 谢谢

    您正在尝试将XAML序列化为XML吗?因为它不是。是的,我意识到XAML和XML不一样。我正在向服务发送一个
    System.Activities.Activity
    对象,因此它应该通过DataContractSerializer,对吗?“请参阅InnerException了解更多详细信息。”叹气。永远不要只复制异常的.Message。调用exception对象上的
    .ToString()
    ,以获取每个异常和内部异常的消息、类型和堆栈跟踪,这通常是确定发生了什么情况所需的。还有,反序列化代码在哪里?最后,“我正在将…对象发送到服务”您是如何做到的?您可能应该使用活动xaml服务序列化到xaml,将其作为文本传输,然后反序列化(假设服务器上存在程序集)。