AzureWebJobsScriptRoot变量未在Azure函数上定义,但在本地返回正确的值

时间:2019-03-10 23:23:54

标签: azure azure-functions

AzureWebJobsScriptRoot变量未在Azure Functions上定义。下面的代码不返回任何值。 System.Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)["AzureWebJobsScriptRoot"];

不过,%HOME%\site\wwwroot将根据以下内容返回:

AzureWebJobsScriptRoot

  

AzureWebJobsScriptRoot

     

host.json文件和函数文件夹所在的根目录的路径。在功能应用程序中,默认值为%HOME%\ site \ wwwroot。

     

关键样本值

     

AzureWebJobsScriptRoot%HOME%\ site \ wwwroot

它在本地返回正确的值,而不是%HOME%\ site \ wwwroot

更新

这是Azure Functions的错误吗?

如果是,什么是替代解决方案?

在Microsoft解决此问题之前,可以在Azure上将这个变量AzureWebJobsScriptRoot定义为"%HOME%\site\wwwroot"吗?

https://github.com/Azure/Azure-Functions/issues/1146 https://github.com/MicrosoftDocs/azure-docs/issues/26761

2 个答案:

答案 0 :(得分:0)

我在自己的网站上进行了测试,并遇到了同样的问题。正如article所说,在Azure中运行时,默认设置为%HOME%\site\wwwroot,并将功能文件夹设置在home\site\wwwroot下。

但是,当我在Azure函数AzureWebJobsScriptRoot中设置Application Settings时,它将显示在以下输出中:

enter image description here enter image description here

答案 1 :(得分:0)

如果您为AzureWebJobsScriptRoot配置具有不同值的功能应用程序,则功能主机应采用该新值。例如,如果设置AzureWebJobsScriptRoot = D:\home\site\wwwroot\foo,则函数主机将在D:\ home \ site \ wwwroot \ foo位置中查找host.json文件和函数目录。

默认情况下,未设置此环境变量。因此,可以预期的是,如果您自己没有进行设置,那么System.Environment.GetEnvironmentVariable("AzureWebJobsScriptRoot")将返回null。

请注意,如果您修改此设置,则门户,Visual Studio,Visual Studio代码等其他组件将无法识别该设置,并将您的代码部署到正常的默认位置。如果要自定义此设置,请确保由您决定将应用程序代码部署到正确的位置。

请参阅完整的详细信息here