2011-05-06 15 views
9

¿Debo simplemente colocar algunos datos de basura al azar en un objeto WebRequest para obtener la restricción del código de estado HTTP 411 en IIS?¿Puedo enviar un objeto HTTP RequestT WebRequest vacío de C# a IIS?

Tengo un método de acción HttpPost en una aplicación MVC 3 que consume una solicitud POST con toda la información relevante pasada en la cadena de consulta (no se necesita cuerpo).

[HttpPost] public ActionResult SignUp(string email) { ... } 

Funcionó muy bien desde el servidor web incorporado de Visual Studio, Cassini. Desafortunadamente, una vez que el código MVC estuvo en vivo en IIS [7.5 en 2008 R2], el servidor está lanzando un código de error HTTP cuando lo golpeé desde mi aplicación C# externa.

The remote server returned an error: (411) Length Required.

Aquí está el código de llamada:

WebRequest request = WebRequest.Create("http://somewhere.com/signup/[email protected]"); 
request.Method = "POST"; 
using (WebResponse response = request.GetResponse()) 
using (Stream responseStream = response.GetResponseStream()) 
using (StreamReader responseReader = new StreamReader(responseStream)) { 
    // Do something with responseReader.ReadToEnd(); 
} 

Respuesta

19

Resulta que se puede conseguir que esto pase por simplemente golpeando una longitud de contenido vacío en la solicitud antes de enviarlo.

WebRequest request = WebRequest.Create("http://somewhere.com/signup/[email protected]"); 
request.Method = "POST"; 
request.ContentLength = 0; 

No sabe cómo dar forma explícita una función de la longitud vacío dando a entender que uno hace una diferencia, pero estaba contento de IIS después que yo. Probablemente haya otras formas de evitar esto, pero esto parece bastante simple.

+0

genial, solo salve mi vida. voto de mi lado – rahularyansharma

Cuestiones relacionadas