To nie jest pytanie - opublikowanie go tutaj w celach informacyjnych:
Podczas korzystania z usługi WebService wystąpił następujący błąd:
Format żądania nie został rozpoznany dla adresu URL nieoczekiwanie kończącego się na / myMethodName
asp.net
web-services
Roman m
źródło
źródło
Odpowiedzi:
Znalazłem rozwiązanie na tej stronie
Wystarczy dodać następujące elementy do pliku web.config
Więcej informacji od Microsoft
źródło
Pomimo 90% wszystkich informacji, które znalazłem (podczas próby znalezienia rozwiązania tego błędu) mówiących mi o dodaniu
HttpGet
iHttpPost
do konfiguracji, które nie działały dla mnie ... i nie miały dla mnie sensu.Moja aplikacja działa na wielu serwerach (30+) i nigdy nie musiałem dodawać tej konfiguracji dla żadnego z nich. Wersja aplikacji działająca pod .NET 2.0 lub .NET 4.0.
Rozwiązaniem było dla mnie ponowne zarejestrowanie ASP.NET w IIS.
Użyłem następującego wiersza poleceń, aby to osiągnąć ...
źródło
aspnet_regiis -i
naprawiłem to.Upewnij się, że używasz właściwej metody: Wyślij / Pobierz, odpowiedni typ treści i odpowiednie parametry (dane).
źródło
content-type: application/json
rozwiązał ten problem.Wspaniały.
Przypadek 2 - gdzie może wystąpić ten sam problem) w moim przypadku problem był spowodowany następującą linią:
Działa dobrze na serwerze, ponieważ wywołania są wykonywane bezpośrednio do funkcji usługi WWW - jednak zakończy się niepowodzeniem, jeśli uruchomisz usługę bezpośrednio z .Net w środowisku debugowania i chcesz przetestować uruchomienie funkcji ręcznie.
źródło
Dla przypomnienia otrzymałem ten błąd, kiedy przeniosłem starą aplikację z jednego serwera na inny. Dodałem
<add name="HttpGet"/> <add name="HttpPost"/>
elementy do pliku web.config, który zmienił błąd na:Aby naprawić ten błąd, musiałem dodać linie ScriptHandlerFactory do pliku web.config:
Dlaczego działało bez tych linii na jednym serwerze WWW, a nie na drugim, nie wiem.
źródło
Używam następującego wiersza kodu, aby naprawić ten problem. Wpisz następujący kod w pliku web.config
źródło
Nie miałem problemu podczas programowania w localhost. Jednak po opublikowaniu na serwerze internetowym usługa zwróciła pusty (pusty) wynik i widziałem błąd w moich dziennikach.
Naprawiłem to, ustawiając mój ajax contentType na:
i używając:
na obiekcie, który publikowałem.
źródło
Ten błąd również dostałem w przypadku apache mod-mono. Wygląda na to, że strona dokumentacji dla serwisu WWW nie jest jeszcze zaimplementowana w systemie Linux. Ale usługa internetowa działa pomimo tego błędu. Powinieneś to zobaczyć, dodając
?WSDL
na końcu adresu URL, tj. Http: //localhost/WebService1.asmx? WSDLźródło
W moim przypadku błąd wystąpił, gdy przeniosłem się z lokalnego komputera z systemem Windows 10 na serwer dedykowany z systemem Windows 2012. Rozwiązaniem było dodanie do pliku web.config następujących linii
źródło
W html musisz załączyć połączenie w formie GET z czymś podobnym
Możesz także użyć
POST
z akcją będącą lokalizacją usługi internetowej i wprowadzić parametr za pomocą znacznika wejściowego.Istnieją również
SOAP
klasy proxy.źródło
W moim przypadku miałem przeciążenie funkcji, które powodowało ten wyjątek, kiedy zmieniłem nazwę mojej drugiej funkcji, działała ona poprawnie, zgaduję, że serwer sieciowy nie obsługuje przeciążania funkcji
źródło
W naszym przypadku problem został wywołany przez wywołanie usługi internetowej za pomocą metody żądania OPTIONS (zamiast GET lub POST).
Nadal nie wiemy, dlaczego problem nagle się pojawił. Usługa internetowa działała doskonale przez 5 lat zarówno przez HTTP, jak i HTTPS. Jesteśmy jedynymi, którzy korzystają z usługi internetowej i zawsze korzysta z POST.
Niedawno postanowiliśmy stworzyć witrynę, która będzie hostować wyłącznie usługę sieciową SSL. Dodaliśmy reguły przepisywania do Web.config, aby przekonwertować dowolny HTTP na HTTPS, wdrożyliśmy i natychmiast zaczęliśmy otrzymywać, oprócz zwykłych żądań GET i POST, żądania OPCJE. Żądania OPTIONS spowodowały błąd omówiony w tym poście.
Reszta aplikacji działała idealnie. Ale wciąż otrzymywaliśmy setki raportów o błędach z powodu tego problemu.
Istnieje kilka postów (np. Ten ) omawiających sposób obsługi metody OPTIONS. Poszliśmy do obsługi żądania OPCJE bezpośrednio w Global.asax. To sprawiło, że problem zniknął.
źródło
Otrzymywałem ten błąd, dopóki nie dodałem (jak pokazano w poniższym kodzie) $ .holdReady (true) na początku mojego wywołania usługi internetowej i $ .holdReady (false) po jego zakończeniu. Jest to jQuery, aby zawiesić stan gotowości strony, aby każdy skrypt w funkcji document.ready czekał na to (wśród innych możliwych, ale nieznanych mi rzeczy).
źródło
Pamiętaj, aby wyłączyć niestandardowe błędy. Może to maskować oryginalny problem w kodzie:
zmiana
do
źródło
WebMethod wymagający ContextKey,
gdy ten klucz nie jest ustawiony, dostał wyjątek.
Napraw go poprzez przypisanie klucza AutoCompleteExtender.
źródło