0

WebAPI を使用してファイル アップロード プロセスをセットアップするために、昔の同僚が以前に書いたコードに従っています。彼のコードでは、メソッド シグネチャで作成されるタスクは type のタスクでTask<MultipartMemoryStreamProvider>あり、私のコードでは typeTask<IEnumerable<HttpContent>>です。

このため、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/set を持つ 2 つのプロパティしかありません。ImageModel も多かれ少なかれ、3 つのプロパティ (2 つの文字列プロパティと 1 つの byte[] プロパティ (実際のファイル用)) を使用した単なるコピー アンド ペーストです。

ここで何が間違っていますか?VS が彼を私のものとは異なる Task<> タイプと見なすのはなぜですか? コンパイルして動作するように、私のものを彼に合わせて変更するにはどうすればよいですか?

ティア

4

1 に答える 1