【问题标题】:API stops working until a request is made on GoDaddy serverAPI 停止工作,直到在 GoDaddy 服务器上发出请求
【发布时间】:2014-09-07 06:02:39
【问题描述】:

我在 Godaddy 服务器上运行 API 时遇到问题。 API 基本上是在网站开始运行后的一段时间内不断地向网站发送请求。因此,它具有在 Application_Start 中创建的用于控制此操作的计时器。由于某种原因,如果没有人提出请求,我的 API 会在一段时间后停止工作。但是我需要我的 API 一直工作,因为我需要一个包含从另一个网站收集的实时数据的列表。您可以在下面详细阅读我采取的步骤和遇到的问题:

  1. 我在用 C# 编写的 Visual Studio 2013 上创建了我的 Web API。
  2. 我从 Godaddy 购买了具有 Windows Deluxe 托管的服务器。
  3. 我使用 ftp 将文件上传到服务器的 httpdocs 文件夹。
  4. 当我通过键入“mysite.com/myWebAPI/myList”调用我的 API 时,它开始工作,最初它返回一个空列表(我认为这很正常)
  5. 然后我在 2 秒内发出相同的请求(允许我的 API 收集数据)并返回我想要的列表,其中包含从另一个网站收集的实时数据。
  6. 此后,我的 API 不应停止。它必须每 X 秒向网站发送一次请求并更新列表中的信息。
  7. 但是,在 5 或 10 分钟后,如果没有人发送请求,那么我的 API 将停止,因此它会停止从另一个网站收集信息并且列表不会更新。
  8. 然后,如果发出另一个请求,它会再次激活并开始工作,但现在我的列表再次为空。这意味着重新创建列表。这只有在再次调用 Application_Start 时才会发生。

请注意,当我在本地主机服务器上运行此 Web API 时,它运行良好。它不会停止并通过每隔 X 秒向网站发送请求来正确收集信息。即使我在 30 分钟内没有提出任何请求,但在 30 分钟后发送请求后,它会返回我想要的列表。

所以问题是,有没有办法解决这个问题并让我的 API 一直工作,而无需在具有 Windows Deluxe Hosting 的 GoDaddy 服务器上停止?

我可能需要在 IIS 应用程序池中做一些事情,但我不知道该怎么做。

感谢您的帮助。

【问题讨论】:

  • IIS 有一个空闲超时,当它没有收到请求时,它会使站点进入休眠状态以节省服务器资源。您是否有权访问 API 应用程序池的空闲时间超时设置?如果是这样,您可以将其设置为更高的限制。如果你不能改变它(或者即使你可以)可能想看看 Quartz 调度器或其他运行计划任务的方法。
  • 感谢您的回复。我联系了 Godaddy,显然您无法调整有关应用程序池的任何内容。我现在正在尝试安排任务,但它给出了 500 内部服务器错误,指出“您要查找的资源有问题,无法显示。”在 Godaddy 上,当您将内容上传到 httpdocs 时,一切正常,但是当您打开子文件夹时,您总是会遇到问题。如果我解决了这个问题,我会让人们知道,这样其他人以后就不会处理这样的事情了。

标签: c# asp.net api iis


【解决方案1】:

我不确定 GoDaddy 的具体情况,但在 Azure Web App Service 上,这也很常见,可以通过启用“始终开启”功能来解决,该功能大概会自动执行每 x 分钟 ping API 的工作。如果 GoDaddy 有类似的功能,启用它可能会解决这个问题。

【讨论】:

    【解决方案2】:
    1. 创建计划任务以在 IIS 空闲之前 ping 您的 API 暂停。 http://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-sc

      http://www.quartz-scheduler.net/

    2. 您还可以设置 Pingdom 来 ping 您的 API。

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 2013-01-01
      • 2016-09-13
      相关资源
      最近更新 更多