【问题标题】:Convert Console App to WebJob/Add to MVC6 Website as Dependent Project将控制台应用程序转换为 WebJob/添加到 MVC6 网站作为依赖项目
【发布时间】:2016-09-22 18:09:46
【问题描述】:

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

我遇到的问题是如何“链接”控制台应用程序和 mvc6 站点,以便在我发布站点时自动发布控制台应用程序/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 的选项。同样,当我右键单击网站项目时,添加下没有添加“依赖”网络作业的选项。

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

想法或建议?

【问题讨论】:

  • 当你说 mvc6 时你的意思是 asp.net core ?
  • 是的,这是一个基于asp.net核心的mvc6网站

标签: azure azure-webjobs


【解决方案1】:

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

Visual Studio Screenshot

更多信息在这里

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

【讨论】:

  • 是的,我有。这就是为什么我能够在使用“默认”VS WebJob 模板添加到解决方案的应用程序上看到该选项。问题是我写的net46控制台应用程序上没有出现该选项,并且想用作WebJob。
  • 你检查链接了吗?有一个名为“为现有控制台应用程序项目启用 WebJobs 部署”的部分,它为您提供了两个选项来启用将现有控制台应用程序部署为 Web 作业。
  • 是的,纳西尔,我做到了。事实上,这是我在 stackoverflow 上发布任何内容之前找到的链接之一。说明和替代方法没有任何帮助,尽管我最终确实获得了手动上传的方法......在我偶然发现 UTF-8 BOM 问题并解决它之后。
【解决方案2】:

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

无论如何,我可以通过手动将控制台应用上传到 wwwroot/App_Data/jobs/continuous/ 来解决这个问题。我是通过 FTP 完成的。

但是,让控制台应用程序在 Azure 下 >>run

不幸的是,我不知道的是,VS2015 默认情况下会在它创建的每个文本文件中保存一个“UTF-8 字节顺序标记”。由于某些奇怪的原因,Azure 处理器不知道如何识别这组标记字符,然后爆炸。

解决方案是在 VS2015 中为 run.cmd 文件执行另存为,并通过选项将文件另存为 UTF-8 >>without

我在http://imperfect.olbert.com/2016/09/23/azure-webjobs-hidden-utf-8-parameters-and-azure/ 上写了更多关于这个的文章

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

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多