現在、他の Azure アプリ用に保護されたレジストリ キーに暗号化キーを保存しており、スタートアップ タスクを介してそのキーを追加しています。ライトスイッチ アプリにも csdef ファイルがあることがわかりますが、スタートアップ タスクがローカルまたは Azure で起動することはないようです。出力をcmdファイルに追加しようとしたこともあるので、何らかのエラーがあるかどうかを確認できますが、ファイルは作成されていません。Lightswitch には Win32.registry がないようなので、コードを介してキーを追加することは問題外のようです。
他の誰かが、Azure でホストされているライトスイッチ アプリでスタートアップ タスクを実行できましたか? 私が理解しているように、物事の紺碧の側面は、ライトスイッチと web.worker ロールを含むプロジェクトの間でそれほど異なるべきではありません。それらはまだ vm で実行されているため、スタートアップ タスクは引き続きレジストリにアクセスできるはずです。それが不可能な場合、レジストリ キーを追加する方法について他に考えがある人はいますか? キーをコードに入れることは、間違いなく理想的ではありません。参考までに、reg ファイルと cmd ファイルの両方がサーバー フォルダーにあり、content と copy always に設定されています。
startup.cmd:
regedit /s 456ddfrt.reg
exit /b 0
csdef:
<WebRole name="LightSwitchWebRole"
vmsize="Small"
enableNativeCodeExecution="true">
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
</Startup>
解決
Yann の提案に従って、Isolated Storage を使用することになりました。コード例を以下に示します。
//Get key from storage, add if not exists
try
{
String strKey = (string)appSettings["encrKey"];
strKey = DecryptString(strKey);
}
catch (Exception Ex)
{
appSettings.Add("encrKey",[mykey]);
String strKey = (string)appSettings["encrKey"];
strKey = DecryptString(strKey);
}
キーをコードに入れる必要がありますが、キーは別の暗号化方法を使用して暗号化されており、Azure では、コードにアクセスできる可能性はかなり低くなります。すべての提案をありがとう!