将 .NET Windows 服务转换为 Azure Web 作业

Convert .NET Windows Service to Azure Web Job

我有一个 .NET Windows 服务并想转换为 Azure Web 作业。如果我可以将其托管为 Azure Web 作业或转换建议,请告诉我。

很遗憾,您不能直接在 Azure PaaS 解决方案中托管 Windows 服务,除非它是使用 TopShelf 构建的。您的选择是:

  1. 使用 Azure 虚拟机托管 Windows 服务
  2. 转换 Windows 服务,使其可以托管在 Azure PaaS 中

对于转换,最简单的计划通常如下:

  1. 创建新的 .NET 控制台应用程序
  2. 将所有逻辑从您的 Windows 服务移至 .NET 控制台应用程序
  3. 让控制台应用程序工作,这样一旦您 运行 它,它就会执行逻辑并退出。所以没有 while 循环让控制台应用程序永远 运行ning。
  4. 将控制台应用发布为 Web 作业。您可以直接从 Visual Studio 发布它或使用 Azure 门户上传它。
  5. 安排 Web 作业在需要时执行。

如果您的服务使用 TopShelf,则可以跳过转换部分。

如果您的 Windows 服务不只是执行简单的逻辑,例如它托管 WCF 或 Web Api,最简单的选择通常是将其转换为 Web 应用程序。

您可以将您的服务转换为控制台应用程序,然后 运行 将其作为连续的 Web 作业。只需将 run.cmd 放入将启动 .exe 文件的同一目录中(参见 Run Background tasks with WebJobs in Azure App Service)。