Estoy tratando de tener una aplicación de consola para enviar un archivo XML a una aplicación web desarrollada en ASP.NET MVC 3, y recibir otro XML como respuesta .Cómo cargar un archivo a ASP.NET MVC desde una aplicación de consola
El error devuelto en la aplicación de consola es:
The remote server returned an error: (500) Internal Server Error.
Cuando llego Fiddler2 corriendo, veo este error:
Object reference not set to an instance of an object.
El código de la aplicación de consola es:
static void Main(string[] args)
{
var wc = new WebClient();
byte[] response = wc.UploadFile("http://mysite.com/Tests/Test", "POST", "teste.xml");
string s = System.Text.Encoding.ASCII.GetString(response);
Console.WriteLine(s);
Console.ReadKey();
}
El código en el controlador MVC es:
[HttpPost]
public ActionResult Test(HttpPostedFileBase file)
{
XElement xml = XElement.Load(new System.IO.StreamReader(file.InputStream));
var test = new MyTest();
return File(test.RunTest(xml), "text/xml", "testresult.xml");
}
RunTest()
funciona bien, ya que este método funciona cuando cargo el archivo a través del formulario (en un método con el mismo nombre, usando el método GET). RunTest()
devuelve el XML con la respuesta.
Cuando depuro la aplicación MVC, veo el problema: ¡la variable file
es nula!
¿Cómo puedo solucionar eso? ¿Qué debo cambiar en la aplicación de mi consola para que realmente envíe un archivo? ¿O es el caso cambiar el método MVC?
Y, antes de intentar usar WebClient
, probé este código aquí: http://msdn.microsoft.com/en-us/library/debx8sh9.aspx, y tuve los mismos resultados.
¡Funcionó! Solo necesitaba eliminar 'como HttpPostedFile', no estaba compilando ... ¡Muchas gracias! –
gracias amigo, ¡ayúdame! – f0x