【发布时间】:2014-09-07 06:02:39
【问题描述】:
我在 Godaddy 服务器上运行 API 时遇到问题。 API 基本上是在网站开始运行后的一段时间内不断地向网站发送请求。因此,它具有在 Application_Start 中创建的用于控制此操作的计时器。由于某种原因,如果没有人提出请求,我的 API 会在一段时间后停止工作。但是我需要我的 API 一直工作,因为我需要一个包含从另一个网站收集的实时数据的列表。您可以在下面详细阅读我采取的步骤和遇到的问题:
- 我在用 C# 编写的 Visual Studio 2013 上创建了我的 Web API。
- 我从 Godaddy 购买了具有 Windows Deluxe 托管的服务器。
- 我使用 ftp 将文件上传到服务器的 httpdocs 文件夹。
- 当我通过键入“mysite.com/myWebAPI/myList”调用我的 API 时,它开始工作,最初它返回一个空列表(我认为这很正常)
- 然后我在 2 秒内发出相同的请求(允许我的 API 收集数据)并返回我想要的列表,其中包含从另一个网站收集的实时数据。
- 此后,我的 API 不应停止。它必须每 X 秒向网站发送一次请求并更新列表中的信息。
- 但是,在 5 或 10 分钟后,如果没有人发送请求,那么我的 API 将停止,因此它会停止从另一个网站收集信息并且列表不会更新。
- 然后,如果发出另一个请求,它会再次激活并开始工作,但现在我的列表再次为空。这意味着重新创建列表。这只有在再次调用 Application_Start 时才会发生。
请注意,当我在本地主机服务器上运行此 Web API 时,它运行良好。它不会停止并通过每隔 X 秒向网站发送请求来正确收集信息。即使我在 30 分钟内没有提出任何请求,但在 30 分钟后发送请求后,它会返回我想要的列表。
所以问题是,有没有办法解决这个问题并让我的 API 一直工作,而无需在具有 Windows Deluxe Hosting 的 GoDaddy 服务器上停止?
我可能需要在 IIS 应用程序池中做一些事情,但我不知道该怎么做。
感谢您的帮助。
【问题讨论】:
-
IIS 有一个空闲超时,当它没有收到请求时,它会使站点进入休眠状态以节省服务器资源。您是否有权访问 API 应用程序池的空闲时间超时设置?如果是这样,您可以将其设置为更高的限制。如果你不能改变它(或者即使你可以)可能想看看 Quartz 调度器或其他运行计划任务的方法。
-
感谢您的回复。我联系了 Godaddy,显然您无法调整有关应用程序池的任何内容。我现在正在尝试安排任务,但它给出了 500 内部服务器错误,指出“您要查找的资源有问题,无法显示。”在 Godaddy 上,当您将内容上传到 httpdocs 时,一切正常,但是当您打开子文件夹时,您总是会遇到问题。如果我解决了这个问题,我会让人们知道,这样其他人以后就不会处理这样的事情了。