7
votes

Comment télécharger un fichier sur ASP.NET MVC à partir d'une application de console

J'essaie d'avoir une application de console pour envoyer un fichier XML à une application Web développée dans ASP.NET MVC 3 et recevez une autre XML comme réponse.

L'erreur renvoyée dans l'application de la console est la suivante: p>

Le serveur distant renvoyé une erreur: (500) Erreur de serveur interne. P> BlockQuote>

Quand je reçois Fiddler2 en cours d'exécution, je vois cette erreur: p>

Référence d'objet non définie sur une instance d'un objet. p> blockQuote>

Le code de l'application de la console est le suivant: p> xxx pré>

Le code dans le contrôleur MVC est le suivant: p>

[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");
}


0 commentaires

3 Réponses :


8
votes

Votre problème est que webClient.uploadfile ne pose pas de formulaire avec l'ENCTYPE défini sur multipart / form-données à l'aide d'une entrée nommée "Fichier" pour MVC pour mapper. Essayez de modifier la méthode latérale de votre serveur à ceci:

[HttpPost]
public ActionResult Test()
{
    var file = Request.Files[0] as HttpPostedFile;
    XElement xml = XElement.Load(new System.IO.StreamReader(file.InputStream));
    var test = new MyTest();
    return File(test.RunTest(xml), "text/xml", "testresult.xml");
}


2 commentaires

Ça a marché! J'ai juste besoin de supprimer le comme httppostedfile , il ne compilait pas ... merci beaucoup!


Je sais que cette question est ancienne, mais à utiliser la demande, je reçois les erreurs que la "demande" de noms est introuvable.




0
votes

Si quelqu'un a le problème légèrement différent mais connexe:

J'ai également dû le faire à l'aide de la fonction uploaddata au lieu de upérfile . Dans ce cas, au lieu d'écrire dans le contrôleur: xxx

On peut simplement écrire: xxx

plus facile! ;)


0 commentaires