Я не могу помочь способу, которым это хранится, но по крайней мере форматирующие работы правильно:
'%.1f' % round(n, 1) # Gives you '5.6'
Это ужасный прием, но он работает. Вызывайте его периодически, если вы заметили, что ваши соединения застревают.
static public void SetIdle(object request)
{
MethodInfo getConnectionGroupLine = request.GetType().GetMethod("GetConnectionGroupLine", BindingFlags.Instance | BindingFlags.NonPublic);
string connectionName = (string)getConnectionGroupLine.Invoke(request, null);
ServicePoint servicePoint = ((HttpWebRequest)request).ServicePoint;
MethodInfo findConnectionGroup = servicePoint.GetType().GetMethod("FindConnectionGroup", BindingFlags.Instance | BindingFlags.NonPublic);
object connectionGroup;
lock (servicePoint)
{
connectionGroup = findConnectionGroup.Invoke(servicePoint, new object[] { connectionName, false });
}
PropertyInfo currentConnections = connectionGroup.GetType().GetProperty("CurrentConnections", BindingFlags.Instance | BindingFlags.NonPublic);
PropertyInfo connectionLimit = connectionGroup.GetType().GetProperty("ConnectionLimit", BindingFlags.Instance | BindingFlags.NonPublic);
MethodInfo disableKeepAliveOnConnections = connectionGroup.GetType().GetMethod("DisableKeepAliveOnConnections", BindingFlags.Instance | BindingFlags.NonPublic);
if (((int)currentConnections.GetValue(connectionGroup, null)) ==
((int)connectionLimit.GetValue(connectionGroup, null)))
{
disableKeepAliveOnConnections.Invoke(connectionGroup, null);
}
MethodInfo connectionGoneIdle = connectionGroup.GetType().GetMethod("ConnectionGoneIdle", BindingFlags.Instance | BindingFlags.NonPublic);
connectionGoneIdle.Invoke(connectionGroup, null);
}
Вот мое предложение. Я не тестировал его. Alter reference.cs
protected override WebResponse GetWebResponse(WebRequest request)
{
try
{
return base.GetWebResponse(request);
}
catch (WebException)
{
HttpWebRequest httpWebRequest = request as HttpWebRequest;
if (httpWebRequest != null && httpWebRequest.ServicePoint != null)
httpWebRequest.ServicePoint.CloseConnectionGroup(httpWebRequest.ConnectionGroupName);
throw;
}
}