Azure功能无法访问应用程序设置

时间:2017-02-08 18:56:41

标签: azure azure-functions

我试图将我目前作为Webjob运行的.NET应用程序转换为Azure函数。

应用程序访问Azure SQL数据库并从门户中的“应用程序设置”获取连接字符串。目前,这是网站应用服务中的应用设置(因为它是一个Webjob)。

所以我创建了一个Azure功能应用程序,创建了一个Powershell定时触发器,并且在Run.ps1中我有:

{
  "error": {
    "code": "BadRequest",
    "message": "Resource not found for the segment 'asdfasdf'.",
    "innerError": {
      "request-id": "e86d84ab-f062-4780-af3c-9afae6e7bc82",
      "date": "2017-02-08T18:53:29"
    }
   }
}

我已将连接字符串添加到功能应用程序的应用程序设置中,但是当我运行该功能时,我收到错误:找不到命名连接字符串myconnectionstring

如果我将连接字符串直接添加到MyApplication.exe.config中,那么它可以正常工作。它也可以作为Webjob完美运行。

有什么想法吗?

更新

以防万一这对未来的其他任何人都有帮助,以下是基于David的答案的Powershell:

Write-Output "PowerShell Timer trigger function executed at:$(get-date)";
cd D:\home\site\wwwroot\MyApplication\MyApplication.exe
Write-Output "PowerShell completed at:$(get-date)";

1 个答案:

答案 0 :(得分:4)

实际上,如果您只是启动exe,那将无效。它在WebJobs中的工作方式是它复制你的exe并转换.exe.config来进行appsetting。

一个建议的解决方法是让您的应用程序依赖于myconnectionstring 环境变量而不是应用程序设置。这将起作用,因为所有进程都会自动继承所有这些env变量。

另一种解决方法是使用应用程序设置的虚拟值部署MyApplication.exe.config,然后让PowerShell脚本在启动进程之前使用env变量的值执行字符串替换。如果转换尚未完成,请确保它仅重新保存文件,因为保存的操作将重新启动该功能。