INFORMACJE: Metody HTTP GET i HTTP POST są domyślnie wyłączone

Streszczenie

W tym artykule opisano zmiany wprowadzone w programie .NET Framework 1.1, które wpływają na metody HTTP GET i HTTP POST na serwerze sieci Web. Przedstawiono również obejścia tych nowych funkcji.

Więcej informacji

Usługi sieci Web połączone z architekturą .NET obsługują protokoły HTTP GET, HTTP POST i SOAP. W programie .NET Framework 1.0 wszystkie te trzy protokoły są domyślnie włączone. Domyślnie w architekturze .NET Framework 1.1 protokoły HTTP GET i HTTP POST są wyłączone. Zdecydowały o tym względy bezpieczeństwa.

Aplikacje używające protokołu HTTP GET lub HTTP POST w celu wywołania usługi sieci Web nie działają prawidłowo, jeśli ta usługa zostanie uaktualniona do programu .NET Framework 1.1. Aplikacje te odbierają komunikat o błędzie
System.Net.WebException
wskazujący, że format żądania nie jest rozpoznawany.

Należy zauważyć, że w formularzu testowym w formacie HTML jest używany protokół HTTP POST i dlatego formularz ten nie działa w programie .NET Framework 1.1. Nie dotyczy to tylko hosta lokalnego, jak wyjaśniono poniżej.

W programie .NET Framework 1.1 zdefiniowano nowy protokół o nazwie HttpPostLocalhost. Domyślnie protokół ten jest włączony. Pozwala on na wywoływanie usług sieci Web używających żądań HTTP POST z aplikacji na tym samym komputerze. Jest to prawda pod warunkiem, że jest używany adres POST URL http://localhost, a nie http://hostname. Pozwala to deweloperom usług sieci Web na używanie formularza testowego w formacie HTML do wywoływania usługi sieci Web z tego samego komputera, na którym znajduje się usługa sieci Web.

Podczas próby uzyskania dostępu do usługi sieci Web z komputera zdalnego nie jest wyświetlany przycisk Wywołaj. Ponadto pojawia się następujący komunikat o błędzie:

Formularz testowy jest dostępny tylko dla żądań z komputera lokalnego

Obejście

Protokoły HTTP GET i HTTP POST można włączyć, edytując plik Web.config dla wirtualnego katalogu głównego, w którym znajduje się usługa sieci Web. Następująca konfiguracja włącza protokoły HTTP GET i HTTP POST:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Można też włączyć te protokoły dla wszystkich usług sieci Web na komputerze, edytując sekcję <protocols> w pliku Machine.config. W następującym przykładzie zostaną włączone protokoły HTTP GET, HTTP POST i SOAP, a także protokół HTTP POST z hosta lokalnego:
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="HttpPostLocalhost"/>
<!-- Ustawienie Documentation włącza strony dokumentacji/testowe -->
<add name="Documentation"/>
</protocols>

Materiały referencyjne

Aby uzyskać więcej informacji na temat konfiguracji usług sieci Web, zobacz opis elementu <protocols> w dokumentacji programu .NET Framework 1.1:
http://msdn2.microsoft.com/en-us/library/ccbk8w5h(vs.71).aspx
Właściwości

Identyfikator artykułu: 819267 — ostatni przegląd: 07.12.2007 — zmiana: 1

Opinia