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

Numer ID artykułu: 819267 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

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

Numer ID artykułu: 819267 - Ostatnia weryfikacja: 16 maja 2007 - Weryfikacja: 1.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft .NET Framework 1.1
Słowa kluczowe: 
kberrmsg kbinfo kbhttp kbwebserver kbwebclasses kbhtml KB819267

Przekaż opinię