2015-06-15 68 views
3

我的Azure WebJob一直保持與退出代碼-2146232576一致失敗。有誰知道退出代碼涉及什麼?失敗的天青webjob

我試圖按計劃運行它,我的源代碼可以在這裏找到:

https://github.com/luke-barnett/trakt-imdb250/tree/master/TrakIMDB250.Scraper

相關日誌:

[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")); 
     } 
    } 
} 

functions.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 
       }; 
      } 
     } 
    } 
} 

回答

8

我的問題是,我是飛得接近太陽嘗試運行.NET 4.6。

降級解決4.5.2它完美地工作:)

注:該解決方案勢必一旦4.6正式支持變得無關緊要。

+1

在我的情況下,我升級到4.6.1。將WebJob降級到4.6後,現在按預期工作。感謝分享! – Shimmy