2009-04-02 7 views
23

J'ai un service Web écrit en C# qui réside sur un site SharePoint. Je l'ai modifié le web.config avec le code suivant:Définition de la valeur de délai d'attente pour le service Web .NET

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

...

pour le fichier IIS Inetpub, le fichier web.config SP ISAPI et la mise en page de SP web.config. J'ai également modifié le fichier machine.config avec le même code et essayé de faire tomber les délais d'attente que je vois dans IIS. Lorsque j'appelle ce service Web à partir d'une application Windows C#, je peux passer à la méthode Web et commencer à déboguer la variable, mais après une courte période (~ 1 minute, peut-être moins), les valeurs des variables ne sont plus présentes. retourné:

System.Net.WebException "La demande a été annulée: l'opération a expiré." J'essaie de déterminer où les valeurs correctes de délai d'attente doivent être définies et comment. Je redémarre IIS après que j'ai fait chaque changement mais rien ne change pour donner des résultats différents.

Merci

Répondre

24

Essayer de définir la valeur de délai d'attente dans votre classe de service proxy Web:

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

La documentation en ligne dit que l'exécutionTimeout est en secondes bien que sur msdn ... –

+0

vous avez raison .... J'ai mis à jour ma réponse. Avez-vous essayé de définir la valeur de délai d'attente sur la classe proxy? –

+0

pouvez-vous préciser où vous proposez de faire cela? J'ai l'instanciation de service Web mais je ne vois aucune propriété pour ProxyClass, juste Proxy ... merci –

17

Après avoir créé votre client spécifiant l'adresse de liaison et le point final, vous pouvez attribuer un OperationTimeout,

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

Quand je tentais cela, il ne semble pas faire de différence – Jimbo

+0

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

+0

le faire de cette façon? il devrait définir le délai d'expiration. –

Questions connexes