我在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的配置。
有没有人对问题出在哪里有一些想法或指示?
答案 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时,我不包含此文件,我得到以下错误。
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)