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

Lui*_*cia 2 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");
    }
Run Code Online (Sandbox Code Playgroud)

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

XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(Path.Combine(Environment.GetEnvironmentVariable("WEBROOT_PATH"), "Template"), ""); 
Run Code Online (Sandbox Code Playgroud)

当我使用第二行时,我得到一个值不能为空的异常.

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

我只需要一行:1.我不需要硬编码2.它应该在本地工作,但也可以部署到Azure.

Ami*_*ple 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(因为它已更改).

  • 对于我来说,WEBROOT_PATH对我来说是空的...也没有在环境变量下的Kudu上列出...你能验证一下吗?可能是他们改变了什么?但是当我使用Kudu在powershell控制台中运行命令时,我可以看到WEBROOT_Path ......完全混淆了 (2认同)