我已经使用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文件有问题。
也乐意提供任何代码示例,但是由于这似乎是部署问题,因此不确定是否相关。
答案 0 :(得分:1)
.net核心Web作业以前也有类似的问题。
这是我的解决方法:
创建.net核心控制台项目并安装所有必需的nuget软件包之后,并确保webjob可以在本地工作。
然后右键单击项目->选择发布->在发布弹出窗口中,选择文件夹,然后选择路径(可以保留默认路径),然后单击发布按钮:
发布完成后,您可以转到上一步中定义的路径(默认情况下,该路径如下所示:webjob_name \ bin \ Release \ netcoreapp2.1 \ publish)。创建一个run.cmd文件,并将类似dotnet your_webjob_name.dll
的内容写入run.cmd->,然后将此处的所有文件发送到.zip文件中。
最后一步是导航到azure门户,上传.zip文件/配置webjob等。
答案 1 :(得分:0)
我设法做到了这一点,但也许不一定要弄清以上这些都不起作用的根本原因。
我关注了以下文章,该文章概述了如何通过网站和发布配置文件部署dotnet核心webjob。通过这种方式发布Webjob使其可以启动并按预期运行。
https://dotnetcoretutorials.com/2018/10/12/azure-webjobs-in-net-core-part-3
如果网站被关闭,这些是我必须遵循的基本步骤,以使其正常运行。
<Target Name="PostpublishScript" AfterTargets="Publish">
<Exec Command="dotnet publish ..\WebJobExamples.WebJobExample\ -o
$(PublishDir)App_Data\Jobs\continuous\WebJobExample" />
</Target>