2013-08-21 2 views
0

WebAPI를 사용하여 파일 업로드 프로세스를 설정하려고 오래 전 동료가 작성한 일부 코드를 따르고 있습니다. 그의 코드에서 메서드 시그니처에서 생성 된 작업은 Task<MultipartMemoryStreamProvider> 유형의 작업이고 광산에서는 Task<IEnumerable<HttpContent>> 유형의 작업입니다.작업 <IEnumerable <HttpContent>> vs WebAPI 파일 업로드의 작업 <MultipartMemoryStreamProvider>

이 때문에 Visual Studio 2010에서는 task에 Result에 대한 정의 또는 Contents에 대한 정의가 없으므로 task.Result.Contents가 작동하지 않는다고 내게 짖고 있습니다. 또한 반환 값은 void가 반환되기를 원하기 때문에 작동하지 않을 것이라고 응답 객체를 반환하려고합니다.

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은 3 개의 속성 (실제 파일의 경우 두 개의 문자열 속성과 한 개의 [] 속성)을 가진 복사하여 붙여 넣기도 가능합니다.

왜 내가 잘못 했습니까? 그것은 컴파일하고 작동 할 수 있도록 내가 광산을 변경할 수 있습니다 어떻게 작업 <> 나보다 유형은?

에게? TIA

답변

0

을 자신에 맞게 내가 VS 2012 년 내 프로젝트를 다시 만들어 지금은 잘 작동합니다. 내가 생각합니다 ' 내 2010 년 설치에는 오래된 라이브러리가있었습니다.

관련 문제