2012-01-06 60 views
0

我正在使用mvc api和控制台应用程序,并将其作为服务使用。将文件从控制台发送到mvc

MVC的代码如下所示:

[HttpPost] 
    public ActionResult Index(HttpPostedFileBase file) 
    { 

     if (file.ContentLength > 0) 
     { 
      var fileName = System.IO.Path.GetFileName(file.FileName); 
      var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
      file.SaveAs(path); 
     } 

     return RedirectToAction("Index"); 
    } 

我尝试不同的方法,我不能让在MVC侧无非file == null多,任何帮助吗?

+2

你能描述一下如何从控制台应用程序发出请求(甚至可能显示代码)吗? – GolfWolf 2012-01-06 13:52:51

+0

是Request.Files填充? – Pbirkoff 2012-01-06 14:00:14

+0

您是否检查过该文件实际上是否正在传入该方法?而且它的长度实际上大于0?编辑: 这[从菲尔哈克博客文章](http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx)似乎回答你的问题。 – crunchy 2012-01-06 13:53:25

回答

1

如果我理解正确,您正试图从控制台应用程序内创建一个Web请求,该应用程序应触发控制器上的此特定方法以触发。

不管是什么问题,这是进行调试有道:

1)使用浏览器测试方法。调试/纠正,直到它正常工作。 2)使用HTTP调试嗅出一个正确的HTTP请求(提琴手应该做的工作) 3)使用WebRequest从控制台应用程序中,并创建了它的参数,这样就可以模仿组参数与Fidder酒店

嗅了嗅

你完成了。

这种方法不行不通。应用程序服务器无法知道客户端触发了哪个请求。如果浏览器请求正常工作,那么肯定可以用WebRequest模仿相同的一组参数。和提琴手(或类似)可以帮助你找出什么特定的POST参数应该是。

我 - 则很可能是:

a)使文件错误(错误的编码,后期参数之间的错误分离器)(边界) b)不得设置请求类型正确

反正 - 没有代码就不可能说,因此我给你一个算法,你可以用它来自己修复这个问题。