在GoDaddy服务器上发出请求之前,API将停止工作

时间:2014-07-16 15:56:54

标签: c# asp.net api iis

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

  1. 我在用C#编写的Visual Studio 2013上创建了我的Web API。
  2. 我从拥有Windows Deluxe主机的Godaddy购买了服务器。
  3. 我使用ftp将我的文件上传到服务器的httpdocs文件夹。
  4. 当我通过键入" mysite.com/myWebAPI/myList"来调用我的API时;它开始工作,最初它返回一个空列表(我认为这是正常的)
  5. 然后我在2秒钟内发出相同的请求(允许我的API收集数据),我希望的列表返回其他网站收集的实时数据。
  6. 在此之后,我的API不应该停止。它必须每隔X秒向网站发送一次请求并更新列表中的信息。
  7. 然而,在5或10分钟后,如果没有人发送请求,那么我的API会停止,因此它会停止从其他网站收集信息,并且列表不会更新。
  8. 然后,如果发出另一个请求,它再次变为活动状态并开始工作,但现在我的列表再次为空。这意味着列表将重新创建。只有再次调用Application_Start时才会发生这种情况。
  9. 请注意,当我在本地主机服务器上运行此Web API时,它可以正常运行。它不会停止并通过每隔X秒向网站发送请求来正确收集信息。即使我没有30分钟发出任何请求,但是在我发出请求30分钟后,它会返回我想要的列表。

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

    我可能不得不在IIS应用程序池中执行某些操作,但我不确定该怎么做。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我不确定GoDaddy,但在Azure Web App Service上这也是常见的,它可以通过启用“始终开启”功能来解决,该功能可能会自动完成每x分钟ping一次API的工作。如果GoDaddy具有类似功能,启用它可以解决此问题。

答案 1 :(得分:0)

  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。