在我们的网站中,我们通过API从Zendesk,Flickr,StopForumSpam提取内容。当这些服务器停机时,我们如何阻止我们的网站阻止?
感谢。
答案 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;
}