在ASP.NET MVC 3网站中使用第三方API

时间:2013-09-20 10:37:48

标签: asp.net asp.net-mvc web-services

在我们的网站中,我们通过API从ZendeskFlickrStopForumSpam提取内容。当这些服务器停机时,我们如何阻止我们的网站阻止?

感谢。

3 个答案:

答案 0 :(得分:0)

在API调用中实施合理的超时策略。你需要确保在比平时加载更长时间和不可用的东西之间取得平衡。

答案 1 :(得分:0)

如果您正在使用MVC4 / .NET 4.5+,则可以使用async and await来调用远程服务,这将允许您的应用程序在等待网络I / O完成时处理其他操作。 / p>

编辑:您仍然需要提供逻辑来管理错误/超时,但在等待触发超时时您不会锁定尽可能多的资源。

如果你搜索那里有很多关于使用async / await来进行网络IO任务的教程。

Edit2:Valverij指出(从问题的标题)你显然无法使用MVC4 / .NET 4.5+,所以你需要使用更冗长的Asynchronous Controller达到同样效果的方法。

答案 2 :(得分:0)

这是目前为止找到的最佳解决方案:

public static bool IsReady(string uri)
{
   // Create a new 'HttpWebRequest' Object to the mentioned URL.
   HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create(uri);

   // Set the 'Timeout' property of the HttpWebRequest to 1000 milliseconds.
   myHttpWebRequest.Timeout = 1000;

   HttpWebResponse myHttpWebResponse;

   try
   {
      // A HttpWebResponse object is created and is GetResponse Property of the HttpWebRequest associated with it 
      myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
   }
   catch (Exception ex)
   {
      Debug.WriteLine("Error: " + ex.Message);
      return false;
   }

   return myHttpWebResponse.StatusCode == HttpStatusCode.OK;

}