2012-01-06 29 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)不得設置請求類型正確

反正 - 沒有代碼就不可能說,因此我給你一個算法,你可以用它來自己修復這個問題。

相關問題