2013-08-21 89 views
0

我正在關注前段時間由我的一位老同事編寫的代碼,嘗試使用WebAPI設置文件上傳過程。在他的代碼中,方法簽名中創建的任務是類型爲Task<MultipartMemoryStreamProvider>的任務,在我的代碼中,它的類型爲Task<IEnumerable<HttpContent>>WebAPI文件上傳中的任務<IEnumerable <HttpContent>> vs任務<MultipartMemoryStreamProvider>

因此,Visual Studio 2010吠叫我說task.Result.Contents將無法工作,因爲任務不包含結果的定義或內容的定義。它還表示返回值不會'工作,因爲它想返回無效,我試圖返回一個響應對象。這裏是我的方法,是從我的工作樣品或多或少的和詳細的複製和粘貼:

public Task<ImageResponseModel> Post() 
     { 
      if (!Request.Content.IsMimeMultipartContent("form-data")) 
      { 
       throw new NotSupportedException("Must be multi-part request"); 
      } 

      return Request.Content.ReadAsMultipartAsync().ContinueWith(task => 
      { 
       var model = new ImageModel(); 

       foreach (HttpContent content in task.Result.Contents) 
       { 
        if (content.Headers.ContentDisposition.Name == "\"UserName\"") 
        { 
         model.UserName = content.ReadAsStringAsync().Result.ToString(); 
        } 
        else if (content.Headers.ContentDisposition.Name == "\"Caption\"") 
        { 
         model.Caption = content.ReadAsStringAsync().Result.ToString(); 
        } 
        else if (content.Headers.ContentDisposition.Name == "\"Image\"") 
        { 
         model.Image = content.ReadAsByteArrayAsync().Result; 
        } 
       } 

       return DoEntry(model); 
      }); 
     } 

     [AcceptVerbs("")] 
     public ImageResponseModel DoEntry(ImageModel model) 
     { 
      ImageResponseModel mod = new ImageResponseModel(); 

      return mod; 
     } 

ImageResponseModel也基本上只是一個副本,其中只有與GET /兩個屬性樣品粘貼組。 ImageModel也或多或少只是一個具有三個屬性(兩個字符串屬性和一個字節[]屬性(對於實際文件)的複製和粘貼)

我在做什麼錯在這裏?爲什麼VS看到他作爲一個不同的任務<>類型不是我的嗎?我怎樣才能改變我的匹配他的,這樣它會編譯和工作?

TIA

回答

0

我重建我的項目在VS 2012和現在工作得很好。我想我必須」我在2010年的安裝中有一些老圖書館。

相關問題