【问题标题】: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?如何让 Web 作业使用 azure 门户存储连接字符串,而不是 Web 作业控制台应用程序部署的配置文件中的内容?
【发布时间】:2017-03-31 21:21:16
【问题描述】:

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

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

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 项目的属性文件夹中删除 webjobs-list.json 文件。我知道我不应该这样做,一切都应该在那里工作和部署,但是当我把它放在那里时,它不会将二进制文件/bin/可执行文件复制到 App_Data\Jobs\continuous网站上的 [webjob] 文件夹...它实际上会将 Web 作业项目的所有源代码\文件复制到那里(这当然不会工作/运行,因为它只是代码,而不是 exe)。删除该 webjobs-list.json 文件,然后在我的版本中添加第二个任务以从构建中查找 [webjob].zip 文件,然后它将仅将二进制文件和可执行文件复制到 App_Data\Jobs\continuous[webjob ] 文件夹。也许这只是尝试从 Visual Studio Online 构建和发布的问题,并且它不能很好地处理 Web 作业部署......不确定,我找不到很多关于设置它的信息使用 Web 应用部署 Web 作业。

【问题讨论】:

    标签: azure azure-webjobs


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好的,所以我只留下了 [webjob project].exe.config 中的密钥,在网站上排队另一个构建,然后部署,据我所知,它仍然没有检查门户中的 conn 字符串,因为 Web 作业在它开始说 AzureWebJobStorage 的连接字符串没有价值时失败,即使我在门户中确实有它。 ....我想知道在我的构建(来自visual studio online)或我的发布定义中是否可能配置不正确。
    • 这里是 .exe.config 连接字符串:
    • 尝试使用Kudu Console 来检查您的配置文件是否确实已部署。
    • 是的,我在里面看到了,它只是带有键和空值的连接字符串。
    • 如果部署了正确的文件,则构建过程不应相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多