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



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

当尝试启动时,为网络作业进程记录的部分错误:

Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:索引方法"Functions.ProcessTestQueueMessage"时出错--->System.InvalidOperationException:Microsoft Azure WebJobs SDK"存储"连接字符串丢失或为空。可以通过以下方式设置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]在Microsoft.Azure.WebJobs.Host.Executors.StorageAccountParser.ParseAccount(字符串连接字符串,字符串连接字符串名称,IServiceProvider服务)

此外,我能真正部署它的唯一方法是从web项目的properties文件夹中删除webjobs-list.json文件。我知道我不应该这么做,一切都应该在那里工作和部署,但当我把它放在那里时,它不会把二进制文件/bin/可执行文件复制到网站上的App_Data\Jobs\continuous[webjob]文件夹中。。。它会将web作业项目的所有源代码\文件复制到那里(当然,这不会起作用/运行,因为它只是代码,而不是exe)。删除该webjobs-list.json文件,然后在我的版本中添加第二个任务,从构建中查找[webjob].zip文件,然后它将仅将二进制文件和可执行文件复制到App_Data\Jobs\continuous[webjob]文件夹中。也许这只是试图从visualstudio在线构建和发布的一个问题,它不能很好地处理web作业部署。。。不确定,我还没能找到很多关于用网络应用程序部署网络作业的信息。

正常情况下,这应该只是工作。流程为:

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

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

更新:正如我们在聊天中发现的,问题是你在Azure中的连接字符串名称中有一个拼写错误。

最新更新