0

wcf Web サービスへのリレーとして機能する asp.net Web API アプリケーションがあります。特定のシナリオでは、大きなファイルをアップロードしたいと考えています。wcf サービスのメソッドは、ファイルをストリームとして受け入れます。中間サーバーにファイルを保存したくない アップロードされたファイルのストリームにアクセスし、それを wcf メソッドに提供して、データが wcf サービスに直接ストリーミングされるようにしたい。

クライアントがファイルをダウンロードしている場合の同様のシナリオを次に示します。

using (IProductsChannel channel = ChannelFactory.CreateChannel())
            {
                result.Content = new StreamContent(channel.GetFile());
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
                return result;
            }
4

1 に答える 1

0

これが少なくとも1つの方法です。HTTPContext を使用すると、これに関する唯一の問題は、単体テストには適していないため、最終的なソリューションで抽象化する必要があることです。

 var file =   HttpContext.Current.Request.Files[0];


            var result = new HttpResponseMessage(HttpStatusCode.OK);

            using (IProductsChannel channel = ChannelFactory.CreateChannel())
            {
                channel.SaveFile(file.InputStream);
            }

            return  new HttpResponseMessage(HttpStatusCode.Created);
        }
于 2012-08-16T06:28:22.970 に答える