如何在azure webjob / console应用程序上获取当前路径

时间:2015-04-13 18:10:01

标签: c# azure

我正在创建一个azure webjob(控制台应用程序),我需要获取可执行文件的当前路径。

完整的代码在这里:

   public static void ActivateFeatures(ClientContext cc)
    {
        XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(@"C:\Users\Esteban\Documents\visual studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Template", "");

        //XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(AppDomain.CurrentDomain.BaseDirectory + @"\\Template\\", "");
        //XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Template"), ""); 
        string templateName = "features.xml";

        // Load the template
        ProvisioningTemplate p2 = provider.GetTemplate(templateName);

        // Apply template to existing site
        try
        {
            cc.Web.ApplyProvisioningTemplate(p2);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Trace.TraceError(ex.Message);
        }
        System.Diagnostics.Trace.TraceInformation("App installed finished");
    }

我的一位朋友告诉我这条线可以在azure上使用,但是当我在本地测试它时它不起作用

XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Template"), ""); 

当我使用第二行时,我得到的值不能为空白例外。

http://screencast.com/t/4tj8YelW

我只需要一行: 我没有硬编码 2.它应该在本地工作,但在部署到Azure时也是如此。

1 个答案:

答案 0 :(得分:9)

您可以使用以下环境变量:

WEBJOBS_PATH - 当前运行的WebJob的临时位置(此处复制WebJob二进制文件以防止在使用新二进制文件更新WebJob时出现锁定问题。)

WEBROOT_PATH - wwwroot的路径。

WEBJOBS_TYPE - 当前正在运行的WebJob的类型。

WEBJOBS_NAME - 当前正在运行的WebJob的名称。

因此,您可以使用%WEBROOT_PATH%\App_Data\jobs\%WEBJOBS_TYPE%\%WEBJOBS_NAME%访问WebJob二进制文件路径,请注意,此目录上的任何更改都将导致重新启动WebJob(因为它已更改)。