如何让 Web 作业使用 Azure 门户存储连接字符串,而不是 Web 作业控制台应用程序的已部署配置文件中的内容?

How do I get a web job to use the azure portal storage connection string, not what's in the web job console app's deployed config file?

我使用链接到我的网络应用程序的 webjobs sdk 创建了一个网络作业。好吧,它不再存在了(我从 Web 应用程序项目中删除了 webjobs-list.json 文件),因为当它被链接时,它只是将源代码文件复制到网站的 app-data 文件夹中,而不是 bin folder/binaries/exe。但是现在我的 Web 作业已从 visual studio 在线部署到我的网站 Azure,并尝试 运行,它不会从我的 Web 应用程序设置中的连接字符串中读取连接字符串(AzureWebJobsStorage 和 AzureWebJobsDashboard)在蔚蓝的门户中。它在与编译 webjob 生成的 exe 一起部署的配置文件中查找它们。如果我手动将这些字符串放入该配置并签入,redploy 它将从那里使用它们,所以它根本不检查门户(即使我的网络应用程序 运行ning 使用中定义的内容很好门户网站)。我认为所有 Web 作业都应该首先在 Azure 门户中查找连接字符串?这对我来说根本不会发生。还有其他人经历过吗?它可能与 visual studio 在线部署它的方式有关吗?

尝试启动时为 webjob 进程记录的部分错误:

Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:索引方法错误 'Functions.ProcessTestQueueMessage' ---> System.InvalidOperationException:Microsoft Azure WebJobs SDK 'Storage' 连接字符串丢失或为空。可以通过以下方式设置 Microsoft Azure 存储帐户连接字符串: [04/01/2017 02:27:40 > ceef22: INFO] 1. 按照以下格式在 .config 文件的 connectionStrings 部分中设置名为 'AzureWebJobsStorage' 的连接字符串,或者 [04/01/2017 02:27:40 > ceef22: INFO] 2. 设置名为 'AzureWebJobsStorage' 的环境变量,或者 [04/01/2017 02:27:40 > ceef22: INFO] 3. 设置相应的 属性 的 JobHostConfiguration。 [04/01/2017 02:27:40 > ceef22: INFO] at Microsoft.Azure.WebJobs.Host.Executors.StorageAccountParser.ParseAccount(String connectionString, String connectionStringName, IServiceProvider services)

此外,我可以真正部署它的唯一方法是从 Web 项目的属性文件夹中删除 webjobs-list.json 文件。我知道我不应该那样做,一切都应该在那里工作和部署,但是当我把它留在那儿时,它不会将 binaries/bin/executable 文件复制到 App_Data\Jobs\continuous网站上的 [webjob] 文件夹...它会从字面上将 Web 作业项目的所有源 code\files 复制到那里(当然不会 work/run,因为它只是代码,而不是可执行程序)。删除该 webjobs-list.json 文件后,然后向我的发布添加第二个任务以从构建中找到 [webjob].zip 文件,然后它将仅将二进制文件和可执行文件复制到 App_Data\Jobs\continuous [网络作业] 文件夹。也许这只是尝试从 visual studio 在线构建和发布的问题,它不能很好地处理 Web 作业部署......不确定,我没能找到很多关于设置的信息最多可以使用 Web 应用程序部署 Web 作业。

通常情况下,这应该可以正常工作。流程是:

  • WebJobs exe 没有 运行 就地,但首先被复制到临时文件夹
  • 作为该复制过程的一部分,如果 foo.exe.config 文件中的任何 AppSettings 和 Conn 字符串被设置为 Azure 设置,它们将被替换(仅在临时副本中,而不是 App_Data).

您能否确保同时部署 foo.exe 和 foo.exe.config?

更新:正如我们在聊天中发现的那样,问题是您在 Azure 中的连接字符串名称中有错字。