2017-08-15 6 views
0

私はAzure VMのIISでホストされているASP.NETコアアプリケーションを持っています。 ExtensionメソッドをAzureのキーとなるようにしますが、そこには何も格納されず、アプリケーションはまだローカルキーを使用しているようです。私はここの例に従いました:http://intellitect.com/staying-logged-across-azure-app-service-swap/。実際、コンソールアプリケーションでコードをテストすると、永続性は正常に機能します。しかし、このコードでASP.NET Coreアプリケーションを実行すると、Azureに永続化されることはありません。なぜどんなアイデア?データ保護キーがAzureに残らない

答えて

1

私は上記の応答を正しいと重要な点で回答しました。しかし、この質問への真の答えは、アプリケーションが起動し、PersistKeysToAzureBlobStorage(または他のPersistToXXXメソッド)を呼び出したため、キーデータが永続化されないということです。それは単にデータ保護の設定のためです。あなたはそれが "怠け者"だと言うことができます。キーデータはコードで生成されるか、フレームワークはまず以下のように保護/保護解除を呼び出します。

var protector = provider.CreateProtector("Some Purpose"); 
var enc = protector.Protect("Hello World"); 
... 
protector.Unprotect(enc); 
2

MVCサービスとDataProtectionサービスの登録の順序を確認してください。 DataProtectionサービスを登録する前に、MVCサービスを登録する必要があります。下記のコードは参照用です。

// Add DataProtection Service 
if (storageUrl != null && sasToken != null && containerName != null && applicationName != null && blobName != null) 
{ 
    // Create the new Storage URI 
    Uri storageUri = new Uri($"{storageUrl}{sasToken}"); 

    //Create the blob client object. 
    CloudBlobClient blobClient = new CloudBlobClient(storageUri); 

    //Get a reference to a container to use for the sample code, and create it if it does not exist. 
    CloudBlobContainer container = blobClient.GetContainerReference(containerName); 
    container.CreateIfNotExists(); 

    services.AddDataProtection() 
     .SetApplicationName(applicationName) 
     .PersistKeysToAzureBlobStorage(container, blobName); 
} 

// Add framework services. 
services.AddMvc(); 
関連する問題