INFO: HTTP GET y HTTP POST están deshabilitados de forma predeterminada

Resumen

Este artículo trata sobre los cambios en.NET Framework 1.1 que afectan el método HTTP GET y el método HTTP POST en un servidor Web. También se describen soluciones alternativas para esta nueva funcionalidad.

Más información

. Los servicios Web conectados a la red admiten HTTP GET, HTTP POST y protocolos SOAP. De forma predeterminada, en.NET Framework 1.0, los tres protocolos están habilitados. De forma predeterminada, en.NET Framework 1.1, HTTP GET y HTTP POST están ambos deshabilitados. Esto es por motivos de seguridad.

Aplicaciones que utilizan HTTP GET o HTTP POST para invocar un servicio Web producirá un error cuando el servicio Web se actualiza a la versión 1.1 de.NET Framework. Estas aplicaciones reciben un
System.Net.WebException
mensaje de error que indica el formato de solicitud no se reconoce.

Observe que el formulario de prueba basado en HTML utiliza HTTP POST y, por tanto, el formulario de prueba basado en HTML no funciona en.NET Framework 1.1. Esto es cierto excepto en localhost, como se indica a continuación.

La aplicación.NET Framework 1.1 define un nuevo protocolo denominado HttpPostLocalhost. De forma predeterminada, este nuevo protocolo está habilitado. Este protocolo permite invocar servicios Web que utilizan solicitudes HTTP POST desde aplicaciones en el mismo equipo. Esto es cierto siempre y cuando la dirección URL de POST utiliza http://localhost, no http://hostname. Esto permite que los desarrolladores de servicios Web utilizar el formulario de prueba basado en HTML para invocar el servicio Web desde el mismo equipo donde reside el servicio Web.

Cuando intenta tener acceso al servicio Web desde un equipo remoto no ve el botón Invoke. Y recibe el siguiente mensaje de error:

El formulario de prueba sólo está disponible para las solicitudes del equipo local

Solución alternativa

Pueden habilitarse HTTP GET y HTTP POST editando el archivo Web.config para la raíz virtual donde reside el servicio Web. La configuración siguiente habilita tanto HTTP GET como HTTP POST:
<configuration>    <system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
Como alternativa, puede habilitar estos protocolos para todos los servicios Web del equipo editando la sección < protocols > del archivo Machine.config. En el ejemplo siguiente se permite HTTP GET, HTTP POST y también SOAP y HTTP POST desde localhost:
<protocols><add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="HttpPostLocalhost"/>
<!-- Documentation enables the documentation/test pages -->
<add name="Documentation"/>
</protocols>

Referencias

Para obtener más información acerca de la configuración de servicios Web, consulte los protocolos de < > elemento en la documentación de.NET Framework 1.1:
http://msdn2.microsoft.com/en-us/library/ccbk8w5h(vs.71).aspx
Propiedades

Id. de artículo: 819267 - Última revisión: 17 ene. 2017 - Revisión: 2

Comentarios