Comment définir keep alive interval pour une connexion HTTP dans WCF
le canal de transport Http de la WCF utilise des connexions HTTP persistantes par défaut. Comment contrôler garder en vie timeout pour ces connexions? La valeur par défaut est 100s. J'ai trouvé cette valeur en surveillant l'application dans Procmon. Je n'ai trouvé aucun paramètre dans l'élément de liaison de transport http qui configure cette temporisation. Y a-t-il une classe .NET qui peut contrôler ce temps mort?
6 réponses
jetez un coup d'oeil ici:
il y a une discussion détaillée sur la manipulation de la propriété keep alive lors d'une connexion http.
il me semble que vous voulez ajuster le Keep-Alive
en-tête HTTP. Vous devriez lire cet article sur HTTP keep-alive et d'abord déterminer si c'est vraiment quelque chose qui vaut votre temps.
Si c'est le cas, essayez de créer un Message D'Inspecteur. Cela devrait vous permettre de modifier les en-têtes HTTP pour chaque message envoyé:
public class KeepAliveMessageInspector : IClientMessageInspector
{
// ...
public object BeforeSendRequest(
ref System.ServiceModel.Channels.Message request,
System.ServiceModel.IClientChannel channel)
{
// Add/modify the Keep-Alive header
var httpRequestMessage = new HttpRequestMessageProperty();
httpRequestMessage.Headers.Add("Keep-Alive", "9000");
request.Properties.Add(
HttpRequestMessageProperty.Name, httpRequestMessage);
return null;
}
// ...
}
j'ai trouvé la solution pour cela. Le problème est que le http du noyau sous-jacent.sys a son propre temps mort et il va briser la connexion.
http://mmmreddy.wordpress.com/2013/07/11/wcf-use-of-http-transport-sharing-persistent-tcp-sessions/
netsh http add timeout timeouttype=idleconnectiontimeout value=120
aussi, cette question Est Semblable à celle-ci quelle durée de 130 secondes killig est mon appel pour le service de streaming de la WCF?
Paramètre ServicePoint.MaxIdleTime devrait vous permettre de changer le délai d'inactivité par défaut de 100 secondes sur les connexions HTTP persistantes.
https://www.visualbasicplanet.info/windows-communication/configuring-http-connections.html
cette réponse, et ce que je peux lire ici, on dirait que vous voulez créer une liaison http personnalisée, et définir le inactivityTimeout
l'attribut.