2012-11-21 13 views
5

Mamy usługę WCF hostowaną w IIS. W plikach dziennika widzę, że klient wysyłający żądanie trwające ponad 3 minuty otrzymuje błąd HTTP 503 (usługa niedostępna).Jak zmienić limit czasu w usłudze WCF hostowanej w usługach IIS?

Jak zmienić limit czasu? Aby przetestować działanie, zmniejszyłem limit czasu do 3 sekund, aby upewnić się, że upłynął limit czasu.

Próbowałem

<system.web> 
    <httpRuntime executionTimeout="3"/> 
</system.web> 

co wydawało się nic nie robić.

Próbowałem również zmienić wiązanie bez skutku.

<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> 

Uwaga, próbuję uzyskać usługę WCF, która zwróci pewnego rodzaju awarię po upływie kontrolowanego przez nas czasu. Nie oczekuję, że żądanie, które trwało dłużej niż oczekiwano, zakończy się.

Każda pomoc najbardziej ceniona przed wyrywaniem włosów.


Wystarczy, aby wyjaśnić ...

Serwis został uruchomiony przez kilka miesięcy. Ale przetwarzając sporadyczne długo działające żądanie, klient otrzymuje odpowiedź HTTP 503 po 3 minutach. W tle widać, że żądanie zostało prawidłowo przetworzone, ale zajęło> 5 minut. Oczywiście w tym momencie jest już za późno, ponieważ klient otrzymał już odpowiedź błędu.

Inne żądania są przetwarzane normalnie.

Obciążenie układu w tym punkcie jest bardzo niskie. W rzeczywistości jest to środowisko testowe, a transakcje są pojedynczo, bez nakładania się.

Jestem również całkiem pewien, że wiązania są połączone z punktami końcowymi. Otworzyłem plik konfiguracyjny w edytorze konfiguracji WCF i wszystko jest poprawnie połączone.

Czy możliwe jest skonfigurowanie limitu czasu w tym momencie w WCF? W sposób, który rozumiem, jeśli nie, ale dlaczego jest zwracany błąd HTTP 503?

Wszystko, co naprawdę chcielibyśmy zrobić, to kontrolować czas, zanim zwrócona zostanie odpowiedź 503.

+0

Czy zastanawiałeś się nad możliwością uruchomienia tego asynchronicznie i odpytania wyniku? – ChrisBint

+0

Usługa jest już w produkcji od pewnego czasu i tego rodzaju zmiana nie nastąpi w najbliższej przyszłości. Na razie chcemy kontrolować czas oczekiwania. – illusio

+0

Jeśli usługa ma błąd wiązania (bez specjalnej obsługi), klient zobaczy tylko błąd http. Jeśli zmienisz limity czasu serwera proxy na 3 sekundy, klient powinien zobaczyć oczekiwany wyjątek komunikacji. – ErnieL

Odpowiedz

1

Po wielu eksperymentach w IIS i testowej usłudze WCF nie udało mi się odtworzyć problemu - nawet na tym samym serwerze. Kwestię tę widzi tylko inna grupa w firmie.

Jedynym sposobem mogę zmusić HTTP 503 error było podjąć app basen w trybie offline, ale przewidywalny spowodowane błędy zostać zwrócone niezwłocznie po otrzymaniu żądania przyszedł.

Dalsze badania wykazały, że HTML związane z Odpowiedź 503 pochodząca z IIS różniła się od odpowiedzi zwracanej klientowi.

Co prawda nie zostało to jeszcze udowodnione, ale doszliśmy do wniosku, że przyczyną problemu jest jakiś składnik sieciowy między klientem a serwerem.

Rzeczywiście istniało pośrednie pomiędzy tymi, które zwróciły limit czasu.

1

Normalnie, gdy dokonuję zmiany wiązania, które nie ma wpływu na punkt końcowy usługi, dzieje się tak, ponieważ wiązanie nie jest połączone z punktem końcowym.

Jeśli wszystko zaczyna się od 503 i działało wcześniej, może to oznaczać, że konto użytkownika, które jest tożsamością puli aplikacji, ma wygasłe hasło.

Jeśli działa dla niektórych połączeń, a nie dla innych, a obciążenie zwiększyło się, może to oznaczać, że klienci nie zamykają połączeń i trafiasz w domyślny limit maksymalnej liczby równoczesnych połączeń.

+0

Dzięki za odpowiedź Shiraz. Rozszerzyłem moje pytanie w odpowiedzi. Moje początkowe myśli były takie same, że wiązanie nie jest w rzeczywistości punktem odniesienia, ale jestem przekonany, że wszystko jest w porządku. A błędy 503 są zwracane tylko wtedy, gdy przetwarzanie trwa> 3 minuty. – illusio

Powiązane problemy