我正在创建一个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时也是如此。
答案 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(因为它已更改)。