0

Windows ワークフロー定義を含む WCF サービスにオブジェクトを送信していますが、カスタム アクティビティを逆シリアル化しようとすると、デシリアライザーでエラーが発生します。

これは、アクティビティの名前空間を次の形式で定義したときに以前は機能していました。

xmlns:tta="clr-namespace: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/"<tta:Naptime />

この変更により、次のようNetDispatcherFaultExceptionに表示されるようになりました。

メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました: パラメータhttp://tempuri.org/:jobを逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは「要素」http://schemas.datacontract.org/2004/07/System.Activities:Activityで、名前「Naptime、Version=1.0.0.0、Culture=neutral、 PublicKeyToken=null:MyNamespace.Naptime'. デシリアライザーは、この名前にマップされる型を認識しません。名前 'MyNamespace.Naptime' と名前空間 'Naptime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.' に対して null 以外の値を返すように、DataContractResolver の ResolveName メソッドの実装を変更することを検討してください。詳細については、InnerException を参照してください。

質問:

  1. clr-namespace 構文を使用するとデシリアライザーが型解決に成功するのに、名前空間宣言に url-style 構文を使用すると失敗するのはなぜですか?

  2. 型リゾルバーが型を完全に誤解しているようで、クラス名を名前空間としてリストしています。なぜこれを行うのでしょうか?

  3. これを適切に実装するにはどうすればよいですか?

ありがとう!

4

0 に答える 0