如何为Get或GetTaskAsync增加TimeOut? (使用Facebook C#SDK 6)
似乎他们的超时时间为15秒。
答案 0 :(得分:5)
使用FacebookClient.HttpWebRequestFactory。由于它是智能感知隐藏的,因此您可能无法在VS中看到它,具体取决于您的设置。
/// <summary>
/// Http web request factory.
/// </summary>
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Func<Uri, HttpWebRequestWrapper> HttpWebRequestFactory
{
get; set;
}
您可能想要做这样的事情。
FacebookClient.HttpWebRequestFactory = url => {
var request = new HttpWebRequestWrapper((HttpWebRequest)WebRequest.Create(url));
request.Timeout = .....;
return request;
};
这至少需要v6。
对于v5,您需要覆盖受保护的方法。
/// <summary>
/// Creates the http web request.
/// </summary>
/// <param name="url">The url of the http web request.</param>
/// <returns>The http helper.</returns>
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
protected virtual HttpWebRequestWrapper CreateHttpWebRequest(Uri url);
答案 1 :(得分:0)
对于GetTaskAsync
版本,您需要传递取消令牌。
var cancellationSource = new CancellationTokenSource(TimeSpan.FromSeconds(2));
await client.GetTaskAsync<T>(path, parameters, cancellationSource.Token);