Azure WebJob无法启动

时间:2017-03-12 23:03:19

标签: azure azure-webjobs azure-webjobssdk

我在Visual Studio 2015中创建了一个Azure WebJob,并将其部署到Azure。

尝试运行WebJob时出现此错误:

[03/12/2017 22:47:46 > 070c62: SYS INFO] Status changed to Running
[03/12/2017 22:47:47 > 070c62: ERR ] 
[03/12/2017 22:47:47 > 070c62: ERR ] Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.HostingProcess.Utilities.Sync, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
[03/12/2017 22:47:47 > 070c62: ERR ]    at Microsoft.VisualStudio.HostingProcess.EntryPoint.Main()
[03/12/2017 22:47:47 > 070c62: SYS ERR ] Job failed due to exit code -532462766
[03/12/2017 22:47:47 > 070c62: SYS INFO] Process went down, waiting for 60 seconds
[03/12/2017 22:47:47 > 070c62: SYS INFO] Status changed to PendingRestart

我试图搜索此错误但找不到与此相关的任何内容。我不知道这是我的WebJob代码中的问题还是Azure中WebJob的配置。

有没有人对问题出在哪里有一些想法或指示?

3 个答案:

答案 0 :(得分:1)

  

[03/12/2017 22:47:47> 070c62:错误]未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.VisualStudio.HostingProcess.Utilities.Sync,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。   [03/12/2017 22:47:47> 070c62:ERR]在Microsoft.VisualStudio.HostingProcess.EntryPoint.Main()

首先,正如David Ebbo所说,请尝试在Azure Web App沙箱之外运行相同的逻辑,并检查它是否正常工作。

此外,据我所知,如果WebJobs项目错过了引用的程序集或文件,我们会得到与您类似的问题。例如,我的控制台应用程序引用了Newtonsoft.Json,但是当我将控制台应用程序作为WebJobs部署到Azure时,我不包含此文件,我得到以下错误。

enter image description here

ConsoleApplication13.Program.Main()是我的控制台应用程序的入口点,请检查您的项目以确保您没有错过某些程序集。

答案 1 :(得分:0)

我通过略微更改Main()方法解决了同样的问题。 将以下行留在Main()的顶部非常重要。

var config = new JobHostConfiguration();

if (config.IsDevelopment)
{
    config.UseDevelopmentSettings();
}
config.Queues.BatchSize = 2; //Number of messages to dequeue at the same time.
config.Queues.MaxDequeueCount = 5; //Max retries before move the messate to the poison.
config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(1); //Pooling request to the queue.
config.NameResolver = new QueueNameResolver(); //Dynamic queue name resolver.

JobHost host = new JobHost(config);

之后我搜索了我在所有源代码中编写的所有“Console.Writeline()”并将其删除,因为我认为它属于Microsoft.VisualStudio.HostingProcess.Utilities.Sync dll。

之后,我删除了门户网站中webApp配置的所有webjobs并再次发布。

Voilá所有的WebJobs都在重新运行。

现在我再次写了“console.WriteLine”并且每次都继续运行良好。所以我认为重要的是将JobHost配置置于Main的最顶层:

var config = new JobHostConfiguration();

if (config.IsDevelopment)
{
    config.UseDevelopmentSettings();
}
config.Queues.BatchSize = 2; //Number of messages to dequeue at the same time.
config.Queues.MaxDequeueCount = 5; //Max retries before move the messate to the poison.
config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(1); //Pooling request to the queue.
config.NameResolver = new QueueNameResolver(); //Dynamic queue name resolver.

JobHost host = new JobHost(config);

答案 2 :(得分:0)

首先,从azure中删除带有错误的Web作业。

然后验证解决方案配置是否在"发布"模式。 enter image description here

最后,再次部署。

PS:希望网络工作在没有任何本地错误的情况下运行!