Tag: servicepoint

当客户端连接到’localhost’上的服务时,为什么System.Net.ServicePoint.ConnectionLimit使用’7FFFFFFF’(Int32.MaxValue / 2147483647)?

为什么当客户端连接到‘localhost’上的服务时,System.Net.ServicePoint.ConnectionLimit使用‘7FFFFFFF’(Int32.MaxValue / 2147483647) ,而如果服务在远程计算机上运行,​​它决定使用’2’作为默认值? 最初我认为如果没有设置servicepoint.connectionlimit,它将是ServicePointManager.DefaultConnectionLimit。 但是,我刚刚意识到(一旦我从客户那里得到了一个问题),那就是它的Int32.MaxValue / 2147483647。 我做了一些研究(详情请参考下面的链接),但我无法找到它用于int32.maxvalue的原因。 我可以猜测它可能是为了更好的性能,因为输入请求和响应消息不会越过边界。 我的问题: 为什么Int32.MaxValue如果服务在‘localhost’上运行? (我在英语中的任何解释;)我从reflection器复制的代码片段也很棒 – 因为我有点推测意图 – 但完全不了解代码:)) 我理解它的性能 – 但是从’2’(默认)到’int32.maxvalue’听起来很响。 换句话说,只要请求不通过网络,为什么打开尽可能多的TCP连接是可以的。 (换句话说 – 为什么默认为int32.maxvalue – 不会有副作用) 一些与此相关的有用链接: 在httpwebrequest中创建TCP连接的方式和位置,以及它与servicepoint的关系如何? http://blogs.microsoft.co.il/idof/2011/06/20/servicepointmanagerdefaultconnectionlimit-2-depends/ http://msdn.microsoft.com/en-us/library/system.net.servicepoint.connectionlimit(v=vs.110).aspx http://arnosoftwaredev.blogspot.com/2006/09/net-20-httpwebrequestkeepalive-and.html Reflector的代码片段 public int ConnectionLimit { get { if ((!this.m_UserChangedLimit && (this.m_IPAddressInfoList == null)) && (this.m_HostLoopbackGuess == TriState.Unspecified)) { lock (this) { if ((!this.m_UserChangedLimit && […]

如何在不下载内容的情况下执行GET请求?

我正在研究一个链接检查器,一般来说我可以执行HEAD请求,但是有些网站似乎禁用了这个动词,所以在失败时我还需要执行一个GET请求(仔细检查链接是否真的死了) 我使用以下代码作为我的链接测试器: public class ValidateResult { public HttpStatusCode? StatusCode { get; set; } public Uri RedirectResult { get; set; } public WebExceptionStatus? WebExceptionStatus { get; set; } } public ValidateResult Validate(Uri uri, bool useHeadMethod = true, bool enableKeepAlive = false, int timeoutSeconds = 30) { ValidateResult result = new ValidateResult(); HttpWebRequest request = WebRequest.Create(uri) as […]