C# azure webjob失败(错误代码-2146232576)

C# azure webjob失败(错误代码-2146232576),c#,azure,azure-webjobs,C#,Azure,Azure Webjobs,My Azure WebJob持续失败,退出代码为2146232576。有人知道退出代码与什么有关吗 我正在按计划运行它,我的源代码可以在这里找到: 相关日志: [06/15/2015 10:51:51 > 1e531f: SYS INFO] Status changed to Initializing [06/15/2015 10:51:53 > 1e531f: SYS INFO] Run script 'TrakIMDB250.Scraper.exe' with scri

My Azure WebJob持续失败,退出代码为2146232576。有人知道退出代码与什么有关吗

我正在按计划运行它,我的源代码可以在这里找到:

相关日志:

[06/15/2015 10:51:51 > 1e531f: SYS INFO] Status changed to Initializing
[06/15/2015 10:51:53 > 1e531f: SYS INFO] Run script 
  'TrakIMDB250.Scraper.exe' with script host - 'WindowsScriptHost'
[06/15/2015 10:51:53 > 1e531f: SYS INFO] Status changed to Running
[06/15/2015 10:51:53 > 1e531f: SYS INFO] Status changed to Failed
[06/15/2015 10:51:53 > 1e531f: SYS ERR ] Job failed due to exit code -2146232576
相关代码:

program.cs

using Microsoft.Azure.WebJobs;

namespace TrakIMDB250.Scraper
{
    class Program
    {
        static void Main(string[] args)
        {
            var config = new JobHostConfiguration();    
            var host = new JobHost(config);    
            host.Call(typeof(Functions).GetMethod("ScrapeIMDB250"));
        }
    }
}
函数.cs

using HtmlAgilityPack;
using Microsoft.Azure.WebJobs;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace TrakIMDB250.Scraper
{
    public class Functions
    {
        [NoAutomaticTrigger]
        public async static Task ScrapeIMDB250(TextWriter log)
        {
            await log.WriteLineAsync("[{0}] Starting scrapping of IMDB Top 250");    
            var html = new HtmlWeb().Load("http://www.imdb.com/chart/top");    
            var chartTable = html.DocumentNode.SelectSingleNode("//table[@class='chart']");    
            var movies = GetMovies(chartTable).OrderBy(movie => movie.Rank);    
            await log.WriteLineAsync("[{0}] Got movies");    
            var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["Storage"].ConnectionString);    
            var blobClient = storageAccount.CreateCloudBlobClient();    
            var container = blobClient.GetContainerReference("imdb-top250");    
            await container.CreateIfNotExistsAsync();    
            await container.SetPermissionsAsync(new BlobContainerPermissions
                {
                    PublicAccess = BlobContainerPublicAccessType.Blob
                });    
            var jsonblob = container.GetBlockBlobReference("top250.json");    
            await jsonblob.UploadTextAsync(JsonConvert.SerializeObject(movies, Formatting.Indented));    
            await log.WriteLineAsync("[{0}] Written to blob storage");
        }

        static IEnumerable<Movie> GetMovies(HtmlNode chartTable)
        {
            foreach (var row in chartTable.SelectNodes(".//tr").Skip(1))
            {
                var title = row.SelectSingleNode("td[@class='titleColumn']");
                var rankSpan = title.SelectSingleNode("span[@name='ir']");
                var seenWidget = row.SelectSingleNode("td/span[@name='ur']/div");

                var name = title.SelectSingleNode("a").InnerText;
                var rank = int.Parse(new string(rankSpan.InnerText.Take(rankSpan.InnerText.Count() - 1).ToArray()));
                var rating = decimal.Parse(rankSpan.GetAttributeValue("data-value", "0"));
                var imdbid = seenWidget.GetAttributeValue("data-titleid", string.Empty);
                var releaseDate = DateTime.Parse(title.SelectSingleNode("span[@name='rd']").GetAttributeValue("data-value", string.Empty));

                yield return new Movie
                {
                    Name = name,
                    Rank = rank,
                    Rating = rating,
                    IMDBId = imdbid,
                    ReleaseDate = releaseDate
                };
            }
        }
    }
}
使用HtmlAgilityPack;
使用Microsoft.Azure.WebJobs;
使用Microsoft.WindowsAzure.Storage;
使用Microsoft.WindowsAzure.Storage.Blob;
使用Newtonsoft.Json;
使用制度;
使用System.Collections.Generic;
使用系统配置;
使用System.IO;
使用System.Linq;
使用System.Threading.Tasks;
命名空间TrakIMDB250.Scraper
{
公共类功能
{
[NoAutomaticTrigger]
公共异步静态任务ScrapeIMDB250(TextWriter日志)
{
wait log.WriteLineAsync(“[{0}]开始废弃IMDB Top 250”);
var html=new HtmlWeb().Load(“http://www.imdb.com/chart/top");    
var chartTable=html.DocumentNode.SelectSingleNode(//table[@class='chart']);
var movies=GetMovies(chartTable).OrderBy(movie=>movie.Rank);
wait log.WriteLineAsync(“[{0}]有电影”);
var storageAccount=CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings[“存储”].ConnectionString);
var blobClient=storageAccount.CreateCloudBlobClient();
var container=blobClient.GetContainerReference(“imdb-top250”);
wait container.CreateIfNotExistsAsync();
等待容器.SetPermissionsAsync(新BlobContainerPermissions
{
PublicAccess=BlobContainerPublicAccessType.Blob
});    
var jsonblob=container.GetBlockBlobReference(“top250.json”);
等待jsonblob.UploadTextAsync(JsonConvert.SerializeObject(movies,Formatting.Indented));
wait log.WriteLineAsync(“[{0}]写入blob存储”);
}
静态IEnumerable GetMovies(HtmlNode图表表)
{
foreach(chartTable.SelectNodes(“../tr”).Skip(1))中的var行
{
var title=row.SelectSingleNode(“td[@class='titleColumn']”);
var rankSpan=title.SelectSingleNode(“span[@name='ir']”);
var seenWidget=row.SelectSingleNode(“td/span[@name='ur']/div”);
var name=title.SelectSingleNode(“a”).InnerText;
var rank=int.Parse(新字符串(rankSpan.InnerText.Take(rankSpan.InnerText.Count()-1.ToArray());
var rating=decimal.Parse(rankSpan.GetAttributeValue(“数据值”,“0”));
var imdbid=seenWidget.GetAttributeValue(“数据标题ID”,string.Empty);
var releaseDate=DateTime.Parse(title.SelectSingleNode(“span[@name='rd'])).GetAttributeValue(“数据值”,string.Empty));
回归新片
{
Name=Name,
秩=秩,
评级=评级,
IMDBId=IMDBId,
ReleaseDate=ReleaseDate
};
}
}
}
}

我的问题是,为了运行.NET 4.6,我飞得离太阳太近了

将解决方案降级为4.5.2,并且它工作得非常好:)

注意:一旦4.6得到正式支持,这个解决方案必然变得无关紧要


截至2018年8月3日,此兼容性问题仍然是一个问题。NET 4.7.2会产生同样的错误,但降级到4.7.1是可行的。

在我的例子中,我升级到了4.6.1。在将WebJob降级到4.6之后,它现在可以正常工作了。谢谢分享!