我们目前正在为我们的其他azure应用程序存储受保护的注册表项中的加密密钥,并且已经通过启动任务添加了该密钥。虽然我看到lightswitch应用程序中也有一个csdef文件,但启动任务似乎永远不会在本地或在azure上启动。我甚至尝试将输出添加到cmd文件中,这样我就可以看到是否存在任何类型的错误,但是文件甚至都没有创建。 Lightswitch似乎没有Win32.registry,因此通过代码添加密钥似乎是不可能的。
是否有其他人能够在天蓝色托管的lightswitch应用程序中运行启动任务?据我所知,在开关和包含web.worker角色的项目之间,事物的天蓝色方面应该不同。它们仍在vm上运行,因此启动任务仍应能够访问注册表。如果不可能有人对如何添加注册表项有任何其他想法?把密钥放在代码中绝对不是理想的。仅供参考,注册文件和cmd文件都在服务器文件夹中,并设置为内容并始终复制。
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建议的隔离存储。代码示例如下。
//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上,他们访问我的代码的可能性非常低。感谢您的所有建议!
答案 0 :(得分:0)
您是否考虑过使用应用程序的Application_Initialize方法?