El canal de solicitud cronótica mientras espera una respuesta después de las 00:00:59
-
10-12-2019 - |
Pregunta
Estoy escribiendo un servicio web muy básico de SharePoint. Probé contra la biblioteca pequeña de 2010 y funciona bien cada vez.
El problema viene con el servidor MOSS 2007 donde una biblioteca es muy grande. Estoy usando .NET 3.5 y con justo debajo de tres líneas de código, recibí un error al azar, el canal de solicitud agotó mientras espera una respuesta después de las 00:00:59. Si aumento el tiempo de espera, entonces todavía recibo un error, La conexión subyacente se cerró: la conexión se cerró inesperadamente.
ListsSoapClient client = new ListsSoapClient();
client.ClientCredentials.Windows.ClientCredential
= System.Net.CredentialCache.DefaultNetworkCredentials;
client.ClientCredentials.Windows.AllowedImpersonationLevel
= System.Security.Principal.TokenImpersonationLevel.Impersonation;
XmlElement listCollection = client.GetListCollection();
No tengo ni idea de por qué aleatoriamente ocasión y se rompe, el servidor no tiene problemas. Tengo u2u CAML BUILDER Y UTILIZARLO PUEDO NO PODRÍA EJECUTAR CONSEJAR CONTRIBUTAR Y obtener resultados de nuevo instantáneamente.
Creo que hay algo mal en mi aplicación.config o algo que necesito establecer en el lado del cliente.
Mi aplicación.config tiene a continuación la configuración,
<binding name="ListsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
y
<client>
<endpoint address="http://ap/AP/_vti_bin/Lists.asmx" binding="basicHttpBinding"
bindingConfiguration="ListsSoap" contract="SharePointListWebService.ListsSoap"
name="ListsSoap" />
<endpoint address="http://ap/AP/_vti_bin/Copy.asmx" binding="basicHttpBinding"
bindingConfiguration="CopySoap" contract="SharePointCopyWebService.CopySoap"
name="CopySoap" />
</client>
Recibo por debajo del error cuando se corjeta todo el tiempo a 10 minutos. Y otra vez, su aleatorio .
Unhandled Exception: System.ServiceModel.CommunicationException: The underlying
connection was closed: A connection that was expected to be kept alive was close
d by the server. ---> System.Net.WebException: The underlying connection was clo
sed: A connection that was expected to be kept alive was closed by the server.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha
nnelRequest.WaitForReply(TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebExc
eption(WebException webException, HttpWebRequest request, HttpAbortReason abortR
eason)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpCha
nnelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeS
pan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message messag
e, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean on
eway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan tim
eout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean on
eway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCall
Message methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req
Msg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
ta, Int32 type)
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoap.Ge
tListCollection(GetListCollectionRequest request)
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoapCli
ent.FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoap.GetL
istCollection(GetListCollectionRequest request) in C:\FetchInvoicesFromSharePoin
tForMaximo\FetchInvoicesFromSharePointForMaximo\Service References\SharePointLis
tWebService\Reference.cs:line 2267
at FetchInvoicesFromSharePointForMaximo.SharePointListWebService.ListsSoapCli
ent.GetListCollection() in C:\FetchInvoicesFromSharePointForMaximo\FetchInvoices
FromSharePointForMaximo\Service References\SharePointListWebService\Reference.cs
:line 2273
at FetchInvoicesFromSharePointForMaximo.Program.Main(String[] args) in C:\Fet
chInvoicesFromSharePointForMaximo\FetchInvoicesFromSharePointForMaximo\Program.c
s:line 32
Solución 2
Fije el problema, pero no estoy seguro de que esto sucedió, puede ser que algún experto puede comentar.
La solución fue, en lugar de agregar como referencia de servicio, agregué como referencia web y hice truco.
Mis supuestos por razones están abajo,
- O ya sea MOSS 2007, no le gusta el cliente proxy creado por la referencia de servicio
- En mi red, tenemos dos aplicaciones con el mismo nombre en un dominio diferente, aunque estaba usando un nombre totalmente calificado en la referencia de servicio, por lo que esto no debería ser causa
gracias
Otros consejos
Cambia lo siguiente:
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
a:
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"