AzureWebJobsScriptRoot变量未在Azure Functions上定义。下面的代码不返回任何值。
System.Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)["AzureWebJobsScriptRoot"];
不过,%HOME%\site\wwwroot
将根据以下内容返回:
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
答案 0 :(得分:0)
我在自己的网站上进行了测试,并遇到了同样的问题。正如article所说,在Azure中运行时,默认设置为%HOME%\site\wwwroot
,并将功能文件夹设置在home\site\wwwroot
下。
但是,当我在Azure函数AzureWebJobsScriptRoot
中设置Application Settings
时,它将显示在以下输出中:
答案 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