暗号化と復号化の接続文字列を暗号化するために、Crypto というクラスを作成しました。このクラスは完全に機能します。
アイデアは、構成ファイルで暗号化された接続文字列を取得することです。
<add name="MyConnString" connectionString="KsY+XWC0GnsepTlVu0Z3BU4r0hCAfgrCl/gbqlasndFmCjq0iiTNC7r0JySqm4BtSnSktE20EfDe9F3cDZTaQqwUgmdQTrxBc8cp5HhC9G6PEyzXIVzy2HMyOIH45yTQ9j70uMPV7TUazlnvzRDYnrKJwpgHNQehjMovgkWKCfZji1kQNVN7/61yvdrv+d6KpQKU5Al5W2QKkI7wxYzvJ4vMwH6XoCk1RnulKFKvaMExWtjQTh4XOy2Wo4M9UHKM/FuhjrsxsBg4JgcUcPGfrJZortFmmeDYt7D7QP6/I9HlIrmR4K42/hKSb/ZGiDV9szK6A/V1u9p5qctqFCui7Dx0AKkvUqFIWOWQHtvivV0R/PW8+R1bxsNkr6wUK6A5uPyghJmP4Qv0VI3vW8z0Tw==" providerName="System.Data.EntityClient" />
問題は、接続文字列をどこでどのように復号化するかです (復号化メソッドが機能します)。edmx ファイル内のデザイナー クラスにこれらの調整を加えてみました。
public partial class KlantenBITEntities : ObjectContext
{
public static string DecryptedConnectionString
{
get { return Crypto.DecryptFromBase64String(ConfigurationManager.ConnectionStrings["MyConnString"].ToString()); }
}
そして、コンストラクターで、復号化された接続文字列を渡そうとしました:
public KlantenBITEntities(): base(DecryptedConnectionString,"KlantenBITEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
これを行うと、次のエラーが表示されます: Keyword not supported:'data source'
エンティティ フレームワークの接続文字列全体を暗号化しました (csdl-、ssdl-、msl-file などを使用)。これが原因でしょうか?
エンティティ フレームワークの接続文字列を解読するための適切な方法を見つけるための助けをいただければ幸いです。