超时设置似乎不起作用



我正在尝试为特殊请求设置超时,这将需要很长时间来处理。因此,我正在尝试设置超时,如下所示:

client.RequestFilter = r => {
    r.Timeout = 1000000;
    r.ReadWriteTimeout = 1000000;
}

但是,这些设置似乎不起作用;请求在大约 30 秒后仍超时。我可以使用一些技巧来正确设置超时吗?

ETA:我收到的响应是流;我是这样做的:

var stream = client.Send<Stream>(requestDto);

有没有更好的方法?

ServiceStack的服务客户端只是HttpWebRequest的包装器,因此您的代码最终会直接设置HttpWebRequest超时和ReadWriteTimeout属性。

请求筛选器允许您直接访问所使用的HttpWebRequest实例,并且设置 Timeout 属性应按预期工作。除此之外,唯一可以修改 行为的类。NET的HttpWebRequest是System.Net.ServicePointManager,它允许您配置一些属性,如DefaultConnectionLimitDnsRefreshTimeout等。但是没有其他请求超时属性。

您可以尝试的替代解决方案是使用ServiceStack的JsonHttpClient,因为它建立在Microsoft较新的HttpClient库之上,因此您可能会有更好的运气。尽管建议使用异步API,因为同步API只是阻止了HttpClient的底层异步API。

对于 API 调用本身,您应该在 using 块中访问流,例如:

using (var stream = client.Send<Stream>(requestDto))
{
}

相关内容

  • 没有找到相关文章

最新更新