C# Azure Web作业部署后无法运行

C# Azure Web作业部署后无法运行,c#,azure,asp.net-core,azure-webjobs,C#,Azure,Asp.net Core,Azure Webjobs,我使用WebJobs 3.0和DotnetCore创建了一个web作业。此webjob由服务总线触发器触发,当前在本地工作。但是,当我将webjob部署到azure时(通过标准zip流程,将type设置为continuous,并扩展到multi-instance),webjob将部署,然后无法运行,出现以下错误 [07/03/2019 11:30:47 cdae3f: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScript

我使用WebJobs 3.0和DotnetCore创建了一个web作业。此webjob由服务总线触发器触发,当前在本地工作。但是,当我将webjob部署到azure时(通过标准zip流程,将type设置为continuous,并扩展到multi-instance),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文件有什么问题,我不明白


我也很乐意提供任何代码示例,但由于这似乎是一个部署问题,我不确定它是否相关

我设法做到了这一点,但也许不一定能找到上述方法不起作用的根本原因

我阅读了下面的文章,其中概述了如何通过网站和发布配置文件部署dotnet核心webjobs。以这种方式发布webjob可以使其按预期启动和运行

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

  • 将asp.net核心网站添加到解决方案(空白模板)
  • 将以下代码段添加到新网站csproj文件(将WebJobExample更改为webjob的名称和位置)
  • 
    
  • 从app service下载发布配置文件并使用Web deploy部署应用程序(FTP不适用于我)

  • 我以前在做.net核心web工作时也遇到过类似的问题

    以下是我的解决方案:

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

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

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


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

    这不是一般的方法。如果其他用户想要创建相同的webjob,最好向他提供.zip,而不是源代码。
        <Target Name="PostpublishScript" AfterTargets="Publish">
          <Exec Command="dotnet publish ..\WebJobExamples.WebJobExample\ -o 
          $(PublishDir)App_Data\Jobs\continuous\WebJobExample"   />
        </Target>