データ コントラクトのブール型プロパティが既定のプロパティを発行しない場合に気付きました。
[DataMember(Order = 0, IsRequired = true, EmitDefaultValue = false)]
public bool IsSet { get; set; }
このプロパティを false に設定すると、シリアル化エラーが発生します。プロパティが設定されているため、これは直観に反しているように見えますが、それは false に設定されているだけです。解決策は、ブール型のプロパティを常に構成してデフォルト値を発行することです。これにより、ネットワーク上で true が true として、false が false として認識されます。
ちょっと興味があります: これは System.Runtime.Serialization のバグですか、それともブール型セマンティクスの必然的な結果ですか?