带有.NET Core的Azure队列存储WebJob

时间:2017-01-26 17:54:42

标签: c# azure azure-storage .net-core azure-webjobs

我有两个项目都是.NET核心。定义模式,模型,命令,查询等的基础结构项目,以及由端点/控制器组成的API,用于处理数据。整个安装程序驻留在Azure上,数据库是Azure SQL。

该系统用于分析,因此整个设置基于只读API,而不是。但是,我显然需要将数据插入数据库。数据来自我的环境中的软件,所以我的想法是创建一个WebJob,它将在Azure队列上接收有效负载,使用NewtonSoft JSON填充我的模型并将其插入数据库。

如果我创建了一个普通的Azure WebJob,它将使用与.NET Core不兼容的.NET版本,因此我将我的项目设置为here。为了设置我的Web作业,我需要对其进行配置:

    public static void Main(string[] args)
    {
        var config = new JobHostConfiguration
        {
            DashboardConnectionString = "",
            StorageConnectionString = ""
        };

        var host = new JobHost(config);
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }

为了使用RunAndBlock();以及我需要引用mscorlib的配置,我在我的project.json中执行:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.Azure.WebJobs": "1.1.2",
    "Microsoft.Azure.WebJobs.Core": "1.1.2",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.3"
    },
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "Microsoft.WindowsAzure.ConfigurationManager": "3.2.3",
    "WindowsAzure.Storage": "8.0.1"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50",
        "net451"
      ]
    }
  },

  "publishOptions": {
    "include": [
      "run.cmd"
    ]
  },

  "runtimes": {
    "win10-x64": {}
  }
}

关于"Microsoft.NETCore.Portable.Compatibility"包阅读here,它说:

  

因此,使用此软件包时可能会遇到类似

的错误      

错误CS0012:类型“WebRequest”在程序集中定义   没有引用。您必须添加对程序集的引用   'System.Net.Requests,Version = 0.0.0.0,Culture = neutral,   公钥= b03f5f7f11d50a3a”。

这正是我得到的,

Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The located assembly's manifest definition does not match the assembly reference.
但是,我不完全确定如何解决这个问题。我的依赖foo不是超级强大,我不确定我是否能够让Azure Queue存储+ webjobs与.NET核心很好地搭配

那么如果它可以修复,我该如何解决呢?

2 个答案:

答案 0 :(得分:1)

根据您的方案,我尝试为我的WebJob构建NETCore控制台应用程序,我可能会遇到与您提供的相同的错误。然后我在NETCore中找到了一些关于WebJob SDK的类似issueissue,并且David Ebbo说明如下:

  

为了澄清,使用.NET Core的Azure WebJobs运行良好。它特别使用了尚未支持的WebJobs SDK。

考虑到您的场景,我假设您需要构建普通的WebJobs和相关的库(模型,查询等)而不是NETCore,以便使用WebJobs SDK。或者你需要重新设计你的场景。

答案 1 :(得分:0)

如果某人仍在寻找解决方案,最近的版本

支持此功能

Install-Package Microsoft.Azure.WebJobs -Version 3.0.0-beta4

请注意,此套餐仍处于测试阶段。您可以在https://www.nuget.org/packages/Microsoft.Azure.WebJobs/3.0.0-beta4

查看最新动态