Abbiamo un servizio WCF ospitato in IIS. Riesco a vedere dai file di registro che un client che invia una richiesta che impiega più di 3 minuti per l'esecuzione riceve un errore HTTP 503 (Servizio non disponibile).Come si modifica il timeout su un servizio WCF ospitato da IIS?
Come cambio il timeout? Per testarlo, ho ridotto il timeout a 3 secondi per assicurarmi che fosse effettivamente scaduto.
Ho provato
<system.web>
<httpRuntime executionTimeout="3"/>
</system.web>
che sembrava non fare nulla.
Ho anche provato a cambiare il binding senza successo.
<basicHttpBinding>
<binding name="basicHttp" receiveTimeout="00:00:03" sendTimeout="00:00:03" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
Nota, sto cercando di ottenere il servizio WCF per restituire una sorta di errore dopo una durata controllata da noi. Non mi aspetto che la richiesta abbia richiesto più tempo del previsto.
Qualsiasi aiuto più apprezzato prima di strapparmi i capelli.
Giusto per chiarire ...
Il servizio è stato installato e funzionante per un paio di mesi. Ma quando si elabora la richiesta occasionale di lunga durata, il client riceve una risposta HTTP 503 dopo 3 minuti. Sullo sfondo possiamo vedere che la richiesta è stata correttamente elaborata ma ha impiegato> 5 minuti. Ovviamente a questo punto è troppo tardi poiché il client ha già ricevuto una risposta di errore.
Altre richieste vengono elaborate normalmente.
Il carico sul sistema a questo punto è molto basso. In effetti, questo è un ambiente di test e le transazioni sono una alla volta senza sovrapposizioni.
Sono anche abbastanza sicuro che i collegamenti siano collegati ai punti finali. Ho aperto il file di configurazione nell'Editor di configurazione WCF e tutto è collegato correttamente.
È persino possibile configurare un timeout a questo punto in WCF? In modo che capisca se non, ma allora perché viene restituito un errore HTTP 503?
Tutto quello che ci piacerebbe veramente fare è controllare il periodo di tempo prima che venga restituita la risposta 503.
Hai mai pensato di eseguire questo in modo asincrono e interrogare il risultato? – ChrisBint
Il servizio è in produzione da un po 'di tempo e quel tipo di cambiamento non accadrà nel prossimo futuro. Per il momento, vogliamo solo controllare la durata del timeout. – illusio
Se il servizio ha un errore di binding (senza una gestione speciale), il client vedrà solo un errore http. Se si modificano i timeout del proxy client su 3 secondi, il client dovrebbe vedere l'eccezione di comunicazione prevista. – ErnieL