是否可以在Azure lightswitch应用程序中启动启动任务?

时间:2013-03-12 17:25:13

标签: c# asp.net c#-4.0 visual-studio-lightswitch lightswitch-2012

我们目前正在为我们的其他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上,他们访问我的代码的可能性非常低。感谢您的所有建议!

1 个答案:

答案 0 :(得分:0)

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