3

WCFクライアントとWCFサービスがあります。

両端にDataContractがあります。クライアントでオブジェクトを逆シリアル化するには、名前空間が必要です。

つまり、打撃は機能しません

[DataContract]
public class Framework
{
    [DataMember]
    public string Name { get; set; } 
}

しかし、これはします:

[DataContract(Namespace = "http//mysite.co.uk"]
public class Framework
{
    [DataMember]
    public string Name { get; set; } 
}

どうしてこれなの?名前空間を離れると、両方ともデフォルトでhttp://tempuri.orgになり、どちらも問題ないと思いました。

名前空間が必要なのは奇妙に思えます。

誰かがこの行動の説明を持っていますか?

4

1 に答える 1

0

あなたが述べたように、それはデフォルトでtempuri名前空間になっているはずです。私はこれを何度も行ったので、それが機能することを知っています。私の推測では、受信データは名前空間を使用しているhttp//mysite.co.ukため、失敗します。の名前空間はDataContract、SOAPメッセージで使用される名前空間と一致する必要があります。

アセンブリまたはディスカバリーを使用してサービス契約を共有していますか?おそらく、コントラクトの一方の端が古く、更新する必要があります(検出を再実行するか、共有アセンブリを再デプロイすることによって)。

于 2013-01-11T21:00:31.537 に答える