如何在C#中保持连接活动?我做得不对。我想创建一个HttpWebRequest obj并使用它来转到我需要的任何URL?我没有看到一种方法来访问除了HttpWebRequest.Create静态方法之外的URL。
如何创建连接,保持连接,浏览页面上的多个页面/媒体并支持代理? (我听说代理很容易,支持几乎是标准的吗?) - 编辑 - 好的答案。我如何申请第二个网址?
{
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://google.com");
WebRequestObject.KeepAlive = true;
//do stuff
WebRequestObject.Something("http://www.google.com/intl/en_ALL/images/logo.gif");
}
答案 0 :(得分:19)
您是否尝试过HttpWebRequest.KeepAlive财产?它设置适当的Keep-Alive HTTP标头并保持连接。 (当然,远程Web服务器也必须支持和启用它。)
MSDN上的HttpWebRequest.KeepAlive文档声明HTTP1.1连接默认设置为 true ,因此我怀疑您尝试联系的服务器不允许连接持久性
自动使用代理,其设置取自您的系统(读取Internet Explorer)设置。也可以通过HttpWebRequest.Proxy属性或调整应用程序配置文件来覆盖代理设置(请参阅http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx)。
答案 1 :(得分:8)
设置HttpWebRequest.KeepAlive属性True .NET将负责其余部分。它只是数据库连接池。 透明地工作。
您可以自由创建新连接.NET将确定您正在连接已连接的服务器并将使用它。还取决于您建立新连接的Net.ServicePointManager.DefaultConnectionLimit
号码(如果您进行多线程,则)。
答案 2 :(得分:3)
您可以将HttpWebRequest.KeepAlive属性设置为true。
对于Proxies,还有一个属性:HttpWebRequest.Proxy
答案 3 :(得分:1)
当HttpWebRequest.KeepAlive = true不够时,我遇到了类似的问题 让它保持活力只有在我设置request.UnsafeAuthenticatedConnectionSharing = true和之后,连接才会保持打开状态 ServicePointManager.MaxServicePointIdleTime = 100000; //避免0或低值
答案 4 :(得分:0)
如果您使用的是Http 1.1,则不应使用Keep-Alive,因为连接是隐式保持活动。
可以设置HttpWebRequest.KeepAlive
属性,但是如果你发送了一个Http 1.1请求,除非你把它设置为Close,否则它实际上不会设置标题。
这是另一个有更多信息的问题: is an HTTP/1.1 request implicitly keep-alive by default?