0

我们目前正在为我们的其他 azure 应用程序将加密密钥存储在受保护的注册表项中,并且一直在通过启动任务添加该密钥。虽然我看到 lightswitch 应用程序中也有一个 csdef 文件,但启动任务似乎永远不会在本地或 azure 上触发。我什至尝试将输出添加到 cmd 文件中,以便查看是否有任何错误,但甚至没有创建该文件。Lightswitch 似乎没有 Win32.registry 因此通过代码添加密钥似乎是不可能的。

有没有其他人能够在 azure 托管的灯开关应用程序中运行启动任务?据我了解,在 lightswitch 和包含 web.worker 角色的项目之间,天蓝色的一面不应该有那么大的不同。它们仍在虚拟机上运行,​​因此启动任务应该仍然能够访问注册表。如果不可能,是否有人对如何添加注册表项有任何其他想法?将密钥放在代码中绝对不理想。仅供参考,reg文件和cmd文件都在服务器文件夹中,并设置为内容并始终复制。

启动.cmd:

regedit /s 456ddfrt.reg 
exit /b 0

文件定义:

 <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);
        }

它仍然涉及将密钥放入代码中,但密钥是使用不同的加密方法加密的,并且在天蓝色上,他们访问我的代码的可能性非常低。感谢所有的建议!

4

1 回答 1

0

您是否考虑过使用应用程序的 Application_Initialize 方法?

于 2013-03-13T12:29:20.790 回答