Cum se mărește perioada de timeout a serviciului web în asp.net? (Programare, .Net, Winforms, Servicii Web, Timeout)

Priyanka a intrebat.

Am creat un serviciu web care este de tip asmx. Și îmi folosesc serviciul web în aplicația .net windows.

Metoda web de la serviciul web primește conversia matricei de octeți a obiectului & obiectul clasei mele având diferite atribute în care adaug un fișier xml sub forma șirului. Atunci când șirul meu care conține date xml crește, atunci îmi dă eroarea „Time out” în timp ce trimite datele către serviciul web.

Cum se poate mări perioada de timeout a serviciului web?

3 răspunsuri
Davide Piras

puteți face acest lucru în moduri diferite:

  1. Setarea unui timeout în apelantul serviciului web din cod (nu sunt 100% sigur, dar cred că am văzut că am făcut acest lucru);
  2. Setarea unui timeout în constructorul proxy-ului serviciului web în referințele web;
  3. Setarea unui timeout în partea serverului, web.config al aplicației de servicii web.

consultați aici pentru mai multe detalii despre al doilea caz:

http://msdn.microsoft.com/en-us/library/ff647786.aspx#scalenetchapt10_topic14

și aici pentru detalii despre ultimul caz:

Cum se mărește timpul de așteptare la o cerere de serviciu web?

Comentarii

  • Am utilizat a doua opțiune & am setat proprietatea timeout a proprietății clasei proxy a serviciului web, dar se aruncă o excepție ca fiind The underlying connection was closed: The connection was closed unexpectedly. –  > Por Priyanka.
MOH3N

1 – Puteți seta un timeout în aplicația dvs:

var client = new YourServiceReference.YourServiceClass();
client.Timeout = 60; // or -1 for infinite

Este în milisecunde.

2 – De asemenea, puteți crește valoarea timeout-ului în tag-ul httpruntime din web/app.config :

<configuration>
     <system.web>
          <httpRuntime executionTimeout="<<**seconds**>>" />
          ...
     </system.web>
</configuration>

Pentru aplicațiile ASP.NET, valoarea Timeout trebuie să fie întotdeauna mai mică decât valoarea proprietății executionTimeout din atributul httpRuntime din Machine.config. Valoarea prestabilită a lui executionTimeout este de 90 de secunde. Această proprietate determină timpul în care ASP.NET continuă să proceseze cererea înainte de a returna o eroare de expirare a timpului. Valoarea proprietății executionTimeout trebuie să fie Timeout-ul proxy, plus timpul de procesare a paginii, plus timpul de tamponare pentru cozile de așteptare. — Sursa

Comentarii

  • Rețineți că elementul httpRuntime merge aici: <configuration> <system.web> <httpRuntime executionTimeout=”600000″ /> … –  > Por Ben Power.
  • În conformitate cu msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx proprietatea este exprimată în secunde, nu în milisecunde. –  > Por Sue Maurizio.
  • De fapt, client.Timeout este exprimat în milisecunde, după cum confirmă intellisense și acest articol: msdn.microsoft.com/en-us/library/… –  > Por Will.
user1012506

În fișierul app.config (sau .exe.config)puteți adăuga sau modifica proprietatea „receiveTimeout” în binding.astfel

<binding name="WebServiceName" receiveTimeout="00:00:59" />

Comentarii

  • Este corect? pls explicați cineva. –  > Por Abu Muhammad.
  • Acest lucru este nepractic. Veți aștepta 24 de ore pentru asta? Ceva nu este în regulă dacă timpul de execuție consumă aproape o zi.  > Por Jon P.