2009-04-02 18 views
23

Tengo un servicio web escrito en C# que está viviendo en un sitio de SharePoint. He modificado el web.config con el siguiente código:Valor de tiempo de espera de configuración para .NET Web Service

<configuration> 
    <system.web> 
    <httpRuntime executionTimeout="360" /> 

...

para el archivo Inetpub IIS, el archivo web.config SP ISAPI y el web.config diseños SP. También modifiqué el archivo machine.config con el mismo código e intenté superar los tiempos de espera que veo en IIS.

Cuando llamo a este servicio web desde una aplicación Windows C# puedo entrar al método web y comenzar a depurar la variable pero después de un corto tiempo (~ 1 minuto, tal vez menos) los valores variables ya no están presentes porque esto se vuelve devuelto:

System.Net.WebException "Se anuló la solicitud: se agotó el tiempo de espera de la operación".

Estoy tratando de averiguar dónde se deben establecer los valores correctos de tiempo de espera y cómo. Reinicio IIS después de haber realizado todos los cambios, pero nada cambia para dar resultados diferentes.

Gracias

Respuesta

24

Pruebe a establecer el valor de tiempo de espera, en su tela clase de servicio de proxy:

WebReference.ProxyClass myProxy = new WebReference.ProxyClass(); 
myProxy.Timeout = 100000; //in milliseconds, e.g. 100 seconds 
+0

La documentación en línea dice que executeTimeout está en segundos, aunque en msdn ... –

+0

tiene razón ... Actualicé mi respuesta. ¿Intentó establecer el valor de tiempo de espera en la clase de proxy? –

+0

¿Puedes aclarar dónde sugieres que hagas esto? Tengo la instanciación del servicio web pero no veo ninguna propiedad para ProxyClass, solo Proxy ... gracias –

17

Después de crear su cliente especificando la dirección de la unión y el punto final, se puede asignar una OperationTimeout,

client.InnerChannel.OperationTimeout = new TimeSpan(0, 5, 0); 
+0

Cuando intenté esto no parecía hacer ninguna diferencia – Jimbo

+0

SetRequestTimeout private void (cliente IClientChannel) { si (cliente! = Null) { client.OperationTimeout = new TimeSpan (0, TIMEOUT_EXPIRE_IN_MIN, 0); } } –

+0

haciéndolo de esta manera? debe establecer el tiempo de espera. –

Cuestiones relacionadas