将Console App转换为WebJob /添加到MVC6网站作为依赖项目

时间:2016-09-22 18:09:46

标签: azure azure-webjobs

我编写了一个MVC6站点和一个控制台应用程序,代表网站处理Azure消息和blob存储。在我的开发机器上一切正常,我可以在Azure上成功部署和运行该站点。

我磕磕绊绊的是如何“链接”控制台应用程序和mvc6网站,这样当我发布网站时,控制台app / webjob会自动发布。

控制台应用程序是在默认控制台应用程序模板上构建的。它的project.json文件是:

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

  "dependencies": {
    "ConnellData": "1.0.0-*",
    "WindowsAzure.Storage": "7.2.1",
    "Microsoft.Azure.WebJobs": "1.1.2",
    "Microsoft.Azure.WebJobs.Core": "1.1.2",
    "Microsoft.EntityFrameworkCore": "1.0.1",
    "Microsoft.Web.WebJobs.Publish": "1.0.12",
    "Microsoft.WindowsAzure.ConfigurationManager": "3.2.1",
    "Newtonsoft.Json": "6.0.8",
    "Serilog": "2.2.1",
    "Serilog.Sinks.TextWriter": "2.0.0",
    "UploadFramework": "1.0.0-*",
    "ConnellDBF": "1.0.0-*",
    "PDFsharp-MigraDoc-GDI": "1.50.4000-beta3b",
    "Zen.Barcode.Rendering.Framework": "3.1.10729.1"
  },

  "frameworks": {
    "net46": {
      "frameworkAssemblies": {
        "System.Configuration": "4.0.0.0",
        "System.IO.Compression": "4.0.0.0"
      }
    }
  }
}

正如您所看到的,它建立在Net46之上,与mvc6网站项目一样。

当我右键单击控制台应用程序项目时,没有选项将其作为Azure webjob发布。同样,当我右键单击网站项目时,Add下没有选项可添加“依赖”webjob。

我在解决方案中添加了一个基于默认WebJob模板构建的虚拟WebJob项目,它具有预期的“发布为Azure WebJob”选项。很明显,我在开发机器上安装了正确的东西。这只是我在控制台应用程序的配置/设置中丢失了一些内容(也可能是网站)。

想法或建议?

2 个答案:

答案 0 :(得分:0)

你安装了webjobs SDK吗?我在Visual Studio中右键单击项目时看到“发布为Azure Webjob”选项

Visual Studio Screenshot

此处有更多信息

https://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-deploy-webjobs/

答案 1 :(得分:0)

我从未弄清楚为什么不会出现涉及将控制台应用程序发布为WebJob的上下文菜单选项。这可能与VS2015工具没有赶上ASPNET Core有关。

无论如何,我能够通过手动将控制台应用程序上传到wwwroot / App_Data / jobs / continuous /来解决此问题。我是通过FTP完成的。

然而,将控制台应用程序设置为>>运行<<在Azure下是另一个问题。 WebJob应用程序通常由调用run.cmd批处理文件的站点启动。在我的例子中,run.cmd文件包含一行调用控制台应用程序的执行(在我的例子中是UploadProcessor.exe)。

不幸的是,我不知道,VS2015默认保存了一个" UTF-8字节顺序标记'在它创建的每个文本文件中。出于某些奇怪的原因,Azure处理器不知道如何识别这组标记字符,并且爆炸。

解决方案是在VS2015中为run.cmd文件执行另存为,并遍历选项以将文件另存为UTF-8>>而不使用<< BOM。创建run.cmd时,您只需执行一次;此后,VS2015将记住您的"没有BOM"设置。

我在http://imperfect.olbert.com/2016/09/23/azure-webjobs-hidden-utf-8-parameters-and-azure/

处写了更多关于此内容的文章

希望Azure团队能解决这个简单但烦人的问题。