Table of Contents
Zaktualizowano
Możesz napotkać wspaniały kod błędu wskazujący, że błąd oczekiwania na minutę nie powiódł się. Przypadkowo istnieje kilka kroków, które możesz wykonać, aby rozwiązać ten problem, i przejdźmy do tego wkrótce.Kod odpowiedzi błędu HTTP 417 Expectation Failed wskazuje, że nie można spełnić przewidywania określonego w tagach Expect-h2 w pozyskiwaniu.
Kodowanie klienta odpowiedzi HTTP 417 Expectation Failed wskazuje, że główne oczekiwanie określone w nagłówku Expect określonego żądania głównego nie mogło zostać spełnione.
Dolegliwość i te same błędy mogą również wystąpić w przypadku usługi sieciowej proxy SOAP utworzonej za pomocą (nie kreatora w 100% standardowego, może to również wystąpić w modelu usługi System.Be) stosu WCF
, jeśli być może
spodziewane
części Http POST
lub może < kod>PUT< / koduje kody). Zapytanie jest wymagane > w standardowym protokole konwencji, który zwraca problem w częściach, dwie, jak opisano w adnotacji tutaj)Jak zwykle pokazują inne odpowiedzi, jeśli większość konkretnych problemów, z jakimi mają do czynienia klienci, jest to, że Oczekuje
, że tagi H2 powodują problem, to ten bardzo konkretny problem można obejść, pracując w globalnym względny problem. Wyłączanie tych pięciu -chastatycznych przekierowań PUT/POST przez System.Net.ServicePointManager.Expect100Continue
.
Rozwiązujesz jednak duży niedokończony podstawowy problem. Stos może nawet używać konkretnych rzeczy HTTP 1.1, takich jak utrzymywanie własnego itp. (Chociaż w wielu przypadkach reszta prawdopodobnie obejmie wyjaśnienia głównych przypadków).
Prawdziwą przeszkodą jest jednak to, że ten automatycznie wygenerowany kod pokazuje, że możesz używać nieświadomych funkcji 1 http.1, ponieważ wszyscy je rozumieją. Aby uniknąć tego w przypadku serwerów proxy usługi sieci Web, możesz zmienić domyślną wartość mojego zastąpienia podstawowego HttpWebRequest.ProtocolVersion
z implikacji 1.1, rozwijając pochodną klasę proxy, która zastępuje nadpisania powleczonego WebRequest GetWebRequest(Uri uri )
jak ujawniono w poście:-
Otwórz ten formularz MyNotAssumingHttp11ProxiesAndServersProxy: MyWS Zastąp bezpieczne żądanie sieciowe GetWebRequest(Uri uri) Żądanie HttpWebRequest = (HttpWebRequest)base.GetWebRequest(uri); request.ProtocolVersion = HttpVersion.Version10; żądanie zwrotu;
(Gdzie MyWS
jest naprawdę serwerem proxy dostarczonym przez webmastera w celu dodania linkloc.)
Klasa ProxyFriendlyXXXWs: BasicHttpBinding_IXX (miejsce docelowe Uri proxyfriendlyxxxws) URL = miejsce docelowe.ToString(); this.IfProxedUrlAddProxyOverriddenWithDefaultCredentials(); // Przechodzą przez niekompletne (lub błędnie skonfigurowane) serwery proxy tylko po to, by znaleźć 1 http. Bez 0 to 417 bezpieczne przewyższenie http WebRequest GetWebRequest( Uri uri ) var call (HttpWebRequest) base =.GetWebRequest(URI); request.ProtocolVersion = HttpVersion.Version10; Proszę wróć; Mydło do statycznej konwersacjiHttpProtokół klientaRealWorldProxyTraversalRozszerzenia // ootb, .NET 1-4 wykonuje mniej niż przekazywanie poświadczeń proxy. Zatrzymano // w którym należy udokumentować, w jaki sposób „tylko twoja, aby zastąpić definitywną konfigurację proxy w twoim app.config” (lub machine.config!) wspólne statyczne puste miejsca IfProxiedUrlAddProxyOverriddenWithDefaultCredentials (ten protokół SoapHttpClientProtocol może być określony przez ekspertów) Strategia docelowa Uri nowy Uri That (.Url ); ProxyedAddress to uri WebRequest to.DefaultWebProxy.GetProxy(); target if (! target.Equals(proxyedAddress)) To .Proxy oznacza, że nowy WebProxy() proxiedAddress Usedefaultcredentials ma wartość true;
zakodowany
Stan 417 w większości żądań wskazuje na problem z nagłówkiem Oczekujące. Prawdopodobnie serwer nie był w stanie odpowiedzieć w drodze na żądanie w tym nagłówku (RFC7231).
Rozwiązanie
Przechwyć jeden konkretny ślad Fiddlera i przeanalizuj określony nagłówek. Przyjrzyj się uważnie, aby sprawdzić, czy problem się pojawił, czy został zmieniony tak, aby działał wcześniej, czy znajduje się na innym serwerze sieciowym itp.
Zaktualizowano
Czy masz dość powolnego działania komputera? Denerwują Cię frustrujące komunikaty o błędach? ASR Pro to rozwiązanie dla Ciebie! Nasze zalecane narzędzie szybko zdiagnozuje i naprawi problemy z systemem Windows, jednocześnie znacznie zwiększając wydajność systemu. Więc nie czekaj dłużej, pobierz ASR Pro już dziś!
W moim przypadku problem był spowodowany brakującym ukośnikiem („/”) na końcu tego parametru corsogin tylko w appsettings.json. Dodanie go rozwiązało ten problem.
Uwaga. Sam System.Net.HttpWebRequest dodaje “Oczekiwać: 100-Kontynuuj” do żądań (link). Możesz rozwiązać ten problem, próbując jawnie:
Jak naprawić błąd 417?
Zmodyfikuj swoje osobiste główne zapytanie SQL, aby zwracać cenne informacje marketingowe XML jako typ danych nvarchar zamiast typu dokumentu XML.Jeśli nie korzystasz z opcji danych XML, ale nadal otrzymujesz 417 Failed, aby poczekać na błąd, rozważ dodanie zadania skryptu przed oznaczeniem interfejsu API (dodaj pierwszy krok wszystkich przepływów).
System Delete.Net.ServicePointManager.Expect100Continue = false;
Rozwiązanie
Protokół HTTP/1.1 modeluje stan na 100 (kontynuuj), co prawdopodobnie ułatwia klientowi sprawdzenie, czy dany komputer zdalny jest gotowy do zaakceptowania żądania przed wysłaniem wiadomości tekstowej. Wygląda na to, że ten proces obejmuje:
- Klient chce wysłać wiadomość zwykle do urządzenia żądającego.
- Klient wysyłaNie ma zapytania ze znacznikami h2 zawierającymi
Expect: 100-continue
. - serwer powróci w statusie
100 lub (Kontynuuj)
, status417 (Oczekiwanie na awarię)
.
100 To (ciąg dalszy)
oznacza, że internet często akceptuje żądanie la, a aplikacja może nadal wysyłać la you can ask body.- < code> 417 (oczekiwanie nie powiodło się ) oznacza, że zdalny komputer odrzuca żądanie.
Czy oczekiwanie 417 nie powiodło się?
Kupon statusu 417 wskazuje na poważny problem z nagłówkiem Expect Return w żądaniu. Serwer prawdopodobnie nie wypełnił treści wraz z tym nagłówkiem (RFC7231).
Podczas korzystania z niektórych planów HTTP dla palety klienta HTTP, labview automatycznie dodaje 100 - aby kontynuować
czekaj do nagłówka przykładów, jeśli wiadomość to Mail 1024 lub nowsza. Może to powodować problemy, gdy komputer zdalny zawsze odpowiada z komunikatem 417 Failed)
lub mniejszym niż (czekanie wie, jak prawidłowo odpowiedzieć na zwykle czekanie.
Ponieważ funkcje budowania klienta Do http nie wyłączają 100 - Kontynuuj
dla obsługi dłuższych wiadomości (większych niż 1024 znaki), miksem jest przebudowanie en – Nagłówek żądania HTTP z wyjątkami zgłaszania wartości null . Standardy W przypadku http metody W3C są specyficzne dla opisu protokołu HTTP.
Error Expectation Failed
Expectativa De Error Fallida
Aspettativa Di Errore Non Riuscita
Fel Förväntan Misslyckades
오류 예상 실패
Fehlererwartung Fehlgeschlagen
Ошибка Ожидание не выполнено
Falha Na Expectativa De Erro
Fout Verwachting Mislukt
Échec De L’attente D’erreur