Wiem, że zadawano to wcześniej, ale wypróbowałem wszystkie znane rozwiązania i nadal nie miałem szczęścia. Mam żądanie, które zwraca około 26 MB JSON. Zwraca 502 w mojej aplikacji internetowej Azure. Ustawiłem maxRequestLength i maxAllowedContentLength na ich maksymalne dozwolone wartości, jak opisano tutaj.

Jak ustawić maxAllowedContentLength na 500MB podczas pracy z IIS7?

Ustawiłem również plik applicationHost.xdt w folderze witryny mojej aplikacji internetowej i sprawdziłem, czy jest stosowany zgodnie z opisem tutaj.

ApplicationHost.xdt w Azure Web Apps

Niemniej jednak, moja prośba wygasa dokładnie o 4 minuty za każdym razem. Mogę uruchomić to samo żądanie dla mojego lokalnego hosta działającego na iisexpress, wskazując na bazę danych Azure SQL i zwraca dane, więc wiem, że jest to coś specyficznego dla aplikacji internetowej Azure.

Włączyłem wszystkie typy logowania w sekcji „Dzienniki usługi aplikacji” mojej aplikacji internetowej. Widzę inne ślady nieudanych żądań dla 401 po wygaśnięciu sesji, ale to żądanie nie rejestruje śledzenia nieudanych żądań ani błędu aplikacji. W strumieniu dziennika na żywo przedstawia żądanie jako 200 odpowiedzi w dziennikach serwera internetowego.

Jakieś inne pomysły?

0
Josh 20 grudzień 2019, 06:07

1 odpowiedź

Dziękuję za szczegółowe pytanie i podzielenie się rozwiązaniami, które już wypróbowałeś. Nie jestem pewien, czy funkcja „ Zawsze WŁĄCZONA ” jest włączona w Twojej aplikacji internetowej. Taki błąd przekroczenia limitu czasu może wystąpić z tego powodu, więc uprzejmie włącz go i daj nam znać w celu dalszego zbadania.

Dodatkowe informacje Azure Load Balancer ma domyślne ustawienie limitu czasu bezczynności wynoszące około cztery minuty (230 sekund); jest to ogólny limit czasu bezczynności żądania, który spowoduje rozłączenie klientów po 230 sekundach. Jednak po tym polecenie nadal będzie działać po stronie serwera. W typowym scenariuszu jest to zazwyczaj rozsądny limit czasu odpowiedzi na żądanie sieciowe. W takich scenariuszach można spojrzeć na metody asynchroniczne, aby uruchomić dodatkowe raporty. Zadania WebJobs lub Azure Functions to inna opcja.

Jeśli konfiguracja „Always On” nie jest włączona, włącz ją. AlwaysOn pomogłoby w utrzymaniu aplikacji załadowanej nawet wtedy, gdy nie ma ruchu, wyśle żądanie do ROOT aplikacji. Niezależnie od tego, jaki plik zostanie dostarczony, gdy zostanie wysłane żądanie do / jest tym, który zostanie rozgrzany, a ta funkcja jest dostarczana z planem App Service Plan nie jest naliczana osobno

1) W portalu Azure przejdź do aplikacji internetowej.

2) Wybierz Ustawienia> Konfiguracja> Ustawienia ogólne.

3) W przypadku opcji Always On wybierz On.

1
AjayKumar-MSFT 20 grudzień 2019, 08:26
Mam włączoną funkcję „Zawsze włączona”. Moja aplikacja nie jest za jawnym modułem równoważenia obciążenia (jak w przypadku braku LB na liście zasobów na platformie Azure), ale może istnieje ukryta przed każdą usługą aplikacji? Czy nie ma sposobu na zwiększenie 230-sekundowego limitu czasu? Moje punkty końcowe interfejsu API to funkcje asynchroniczne. Wolałbym nie przenosić tego punktu końcowego do zadania sieci Web lub funkcji azure, ponieważ jest to zwykły punkt końcowy webapi używany stale w mojej aplikacji. Właśnie w tym przypadku drzewo, które ciągnie, jest nienormalnie duże.
 – 
Josh
20 grudzień 2019, 17:11
Kolejną interesującą informacją jest to, że po uruchomieniu tego zapytania lokalnie zwraca ono w ciągu 1 minuty. Więc nie jestem pewien, czy osiągam limit czasu, czy limit rozmiaru.
 – 
Josh
20 grudzień 2019, 17:18
Zdalnie debugowałem moje punkty końcowe i wydaje się, że problem polega na tym, że zapytanie EF z mojej bazy danych nigdy nie powraca. Na mniejszych drzewach tak, ale na tym po prostu wisi w nieskończoność. To wyjaśnia, dlaczego działa lokalnie w ciągu 1 minuty, ale kończy się po 4 minutach na lazurowym. Nadal nie mam pojęcia, dlaczego ten sam kod wysyłający zapytania do tej samej bazy danych z tymi samymi parametrami połączenia działałby na lokalnym, ale nie na platformie Azure.
 – 
Josh
20 grudzień 2019, 17:54
Tak, to niejawny system równoważenia obciążenia docs.microsoft.com/en-us/azure/app-service/…. Aby zmodyfikować wartość, dodaj ją do pliku web.config -
 – 
AjayKumar-MSFT
26 grudzień 2019, 10:44