2010-03-29 4 views
4

Ma configuration Web se présente comme suit:Soulevez le temps pour un seul webservice

<system.web> 
    <compilation debug="false"/> 
    <httpRuntime executionTimeout="90"/> 
</system.web> 

Ceci est très bien pour la plupart des fonctions de WebService mais une fonction a une requête qui exécute une très longue (5 minutes) temps et sera arrêté avant qu'il ne soit fini. Est-il possible de définir le temps d'exécution à 5 minutes pour ce webservice seul?

.: par exemple

MyWebServices.asmx?op=WS_LongMethod --> Timeout of 5 minutes 

J'ai pensé à l'exécution de l'async de requête de base de données (feu et oublier), mais il ne semble pas possible avec sybase/oracle via ODBC.

+0

@Carra: Avez-vous trouvé la réponse à votre question? Si oui, veuillez marquer la réponse. –

Répondre

10

Oui, vous pouvez le faire. Dans le web.config, vous aurez besoin d'ajouter un élément <location/>:

<location path="Path_To_Your_Service.asmx"> 
    <system.web> 
     <httpRuntime executionTimeout="90"/> 
    </system.web> 
</location> 

L'élément <location/> vous donne un mécanisme par lequel vous pouvez appliquer web.config attributs à des chemins spécifiques de votre site.

+0

J'ai oublié de mentionner: l'attribut de chemin '' vous permet de localiser les paramètres contenus dans l'élément dans le fichier ou le chemin spécifique que vous spécifiez! – Richard

+0

Cela changerait toutes mes fonctions de webservice. Je veux juste changer une fonction web, par ex. "MyWebServices.asmx? Op = WS_DoLongQuery" – Carra

+0

Désolé, votre message initial dit "Est-il possible de définir le temps d'exécution à 5 minutes pour ce webservice seul?" - pas une méthode Web spécifique. Je n'ai jamais essayé de spécifier une chaîne de requête dans l'attribut path - l'avez-vous essayé? – Richard

-1

Avez-vous vérifié la propriété .Timeout du service Web?

Indique l'heure à laquelle un client de service Web XML attend une requête de service Web XML synchrone (en millisecondes).

+0

De la documentation: «Indique l'heure à laquelle un service Web XML client attend qu'une requête de service Web XML synchrone se termine (en millisecondes). – Carra

+0

@Carra: Désolé, si j'ai mal compris. Je suppose qu'un client appelle votre service Web comme 'MyWebServices.asmx? Op = WS_LongMethod', donc si vous utilisez un proxy pour appeler les méthodes webservice, alors ce paramètre de délai d'attente serait utilisable. –

+0

Je sais, nous avons déjà fixé un délai d'attente côté client. Pour cette longue fonction de requête, nous définissons simplement le délai d'attente du client à 5 minutes. – Carra

2

Vous pouvez utiliser un délégué dans votre service Web pour appeler une autre méthode de manière asynchrone. Dans cette méthode, vous pouvez faire votre base de données IO. Cela signifie que vous retournerez à l'appelant avant la fin de l'opération. Cependant, si vous générez un identifiant unique et stockez des informations relatives à cet identifiant, vous pourrez le récupérer ultérieurement.

+0

J'ai essayé de démarrer l'opération avec un QueueUserWorkItem (ou un délégué fire and forget) et cela fonctionne bien. Cependant, je voudrais m'assurer que le thread est arrêté si la requête dure plus de 5 minutes. – Carra

Questions connexes