WCF-WPFアプリケーションの開発を開始。
クライアントとサーバー間のデータは、メッセージ レベルで暗号化されます。役割とユーザー名とパスワードに基づく独自のポリシーを使用して、カスタムの認証と承認を実装しました。
奇妙なエラーに直面しました。クライアントとサーバー間で転送される [DataContract] を単純型または型が実装している場合、アプリケーションは機能します。しかし、Catel ライブラリの PropertyData を含むアイテムを転送しようとすると。例外の取得 System.Security.Cryptography.CryptographicException: (DigestVerificationFailedForReference) test faileddigest for links \ "# _0 \". "
app.config
<serviceCredentials>
<serviceCertificate findValue="01" storeLocation="LocalMachine"
storeName="My" x509FindType="FindBySerialNumber" />
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="TS.PortraitExpertise.AuthWCF.CustomUserNameValidator, TS.PortraitExpertise.AuthWCF" />
</serviceCredentials>
モデル例
[Serializable]
public class TestModel : ModelBase
{
public TestModel()
{
}
protected TestModel(SerializationInfo info, StreamingContext context)
: base(info, context) { }
/// <summary>
/// Unique key.
/// </summary>
public int Id
{
get { return GetValue<int>(IdProperty); }
set { SetValue(IdProperty, value); }
}
/// <summary>
/// Register the Id property so it is known in the class.
/// </summary>
public static readonly PropertyData IdProperty = RegisterProperty("Id", typeof(int));
}
メッセージ レベルで暗号化を無効にすると、データは正常に送信されます。オブジェクトをシリアル化してから逆シリアル化すると、操作は正常に完了します。シリアライゼーション モデルとデシリアライゼーション モデルの間で再生した場合の問題 Katel は暗号化を追加しました。モデル Catel を放棄しない問題を解決するにはどうすればよいですか?