部署后Az​​ure Web Jobs无法运行

时间:2019-07-03 11:54:37

标签: c# azure asp.net-core azure-webjobs

我已经使用Web作业3.0和dotnet core创建了一个Web作业。此Webjob由服务总线触发器触发,当前在本地工作。但是,当我将webjob部署为azure(通过标准zip流程,类型设置为“连续”,并缩放为多实例)时,webjob就会部署,然后由于以下错误而无法运行。

[07/03/2019 11:30:47 cdae3f: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[07/03/2019 11:30:47 cdae3f: SYS INFO] Status changed to Running
[07/03/2019 11:30:48 cdae3f: INFO] 
[07/03/2019 11:30:48 cdae3f: INFO] D:\local\Temp\jobs\continuous\export-pdf\kucubmeb.3gj>dotnet exec Foo.ExportPdf.WebJob.dll 
[07/03/2019 11:30:48 cdae3f: ERR ] Error:
[07/03/2019 11:30:48 cdae3f: ERR ]   An assembly specified in the application ependencies manifest (Foo.ExportPdf.WebJob.deps.json) was not found:
[07/03/2019 11:30:48 cdae3f: ERR ]     package: 'System.Text.Encoding.CodePages', version: '4.5.1'
[07/03/2019 11:30:48 cdae3f: ERR ]     path: 'runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll'
[07/03/2019 11:30:48 cdae3f: ERR ] 
[07/03/2019 11:30:48 cdae3f: SYS ERR ] Job failed due to exit code -2147450740
[07/03/2019 11:30:48 cdae3f: SYS INFO] Process went down, waiting for 60 seconds
[07/03/2019 11:30:48 cdae3f: SYS INFO] Status changed to PendingRestart

现在查看上面的错误日志,很明显地表明“ System.Text.Encoding.CodePages.dll”丢失了,这就是引起问题的原因。因此,看到此消息后,我为Encoding.CodePages安装了nuget包,现在可以在输出目录中看到.dll文件,但是它对错误消息没有影响。

我感觉错误消息是红色鲱鱼,或者是我不理解的deps.json文件有问题。

也乐意提供任何代码示例,但是由于这似乎是部署问题,因此不确定是否相关。

2 个答案:

答案 0 :(得分:1)

.net核心Web作业以前也有类似的问题。

这是我的解决方法:

创建.net核心控制台项目并安装所有必需的nuget软件包之后,并确保webjob可以在本地工作。

然后右键单击项目->选择发布->在发布弹出窗口中,选择文件夹,然后选择路径(可以保留默认路径),然后单击发布按钮:

enter image description here

发布完成后,您可以转到上一步中定义的路径(默认情况下,该路径如下所示:webjob_name \ bin \ Release \ netcoreapp2.1 \ publish)。创建一个run.cmd文件,并将类似dotnet your_webjob_name.dll的内容写入run.cmd->,然后将此处的所有文件发送到.zip文件中。

enter image description here

最后一步是导航到azure门户,上传.zip文件/配置webjob等。

答案 1 :(得分:0)

我设法做到了这一点,但也许不一定要弄清以上这些都不起作用的根本原因。

我关注了以下文章,该文章概述了如何通过网站和发布配置文件部署dotnet核心webjob。通过这种方式发布Webjob使其可以启动并按预期运行。

https://dotnetcoretutorials.com/2018/10/12/azure-webjobs-in-net-core-part-3

如果网站被关闭,这些是我必须遵循的基本步骤,以使其正常运行。

  1. 将asp.net核心网站添加到您的解决方案(空白模板)
  2. 将以下代码段添加到您的新网站csproj文件中(将WebJobExample更改为您的webjob的名称和位置)
    <Target Name="PostpublishScript" AfterTargets="Publish">
      <Exec Command="dotnet publish ..\WebJobExamples.WebJobExample\ -o 
      $(PublishDir)App_Data\Jobs\continuous\WebJobExample"   />
    </Target>
  1. 从应用程序服务下载发布配置文件并使用Web Deploy部署应用程序(FTP对我不起作用)