我正在關注前段時間由我的一位老同事編寫的代碼,嘗試使用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