servicio pudo protocolo porque net mensaje extremo distribuir dirección configurar admite .net wcf

.net - protocolo - no se pudo distribuir el mensaje porque el servicio en la dirección de extremo



Cómo establecer mantener vivo el intervalo para la conexión HTTP en WCF (6)

¿Qué tal esto? Parece que puede ser una función de su servidor IIS y no tiene nada que ver con el servicio WCF? Sé que este enlace se aplica a IIS6, pero ¿tal vez sirve de base para algo similar en IIS7? http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/73566f83-c257-4941-8ed8-7ae45b2e7985.mspx?mfr=true

El canal de transporte HTTP en WCF utiliza conexiones HTTP persistentes de forma predeterminada. ¿Cómo controlar mantener vivo el tiempo de espera para esas conexiones? El valor predeterminado es 100 s. Encontré ese valor al monitorear la aplicación en Procmon. No he encontrado ninguna configuración en el elemento de enlace de transporte http que configura este tiempo de espera. ¿Hay alguna clase .NET que pueda controlar ese tiempo de espera?


A partir de esta respuesta , y lo que puedo leer here , parece que desea crear un enlace http personalizado y establecer el atributo inactivityTimeout .

Del artículo de MSDN:

<bindings> <customBinding> <binding name="Binding1"> <reliableSession acknowledgementInterval="00:00:00.2000000" enableFlowControl="true" maxTransferWindowSize="32" inactivityTimeout="00:10:00" maxPendingChannels="128" maxRetryCount="8" ordered="true" /> <security mode="None"/> <httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" proxyAuthenticationScheme="Anonymous" realm="" useDefaultWebProxy="true" /> </binding> </customBinding> </bindings>





Me parece que quieres ajustar el encabezado HTTP de Keep-Alive . Debería leer este artículo sobre HTTP keep-alive y primero determinar si realmente vale la pena dedicarle tiempo.

Si es así, intente crear un inspector de mensajes . Esto debería permitirle modificar los encabezados HTTP para cada mensaje que se envía:

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; } // ... }