2011-07-02 28 views
0

非常に単純なWCFサービス(ファイルアップロード用のコンソールアプリケーション)があります。私はエラー(400)悪い要求を取得し続ける。それは私が小さいファイル(4kb)をアップロードするが700kbのために失敗するとき働く。WCFコンソールアプリケーションのファイルサイズ制限を増やす方法

私はスタックオーバーフローなどから行った読みから、MaxReceivedMessageSizeを増やす必要があります。これはカスタムクラスを使用して実装され、OnOpeningメソッドをオーバーライドしましたが、それでも動作しませんでした。

私はこの問題を解決するにはどうすればよい var uri = new Uri("http://localhost:8000");
var svc = new WebServiceHost(typeof (UploadService), uri);


にとのWebClientまた
outputBytes = webClient.UploadData(baseUrl + "/uploads/2." + filenameOnly, File.ReadAllBytes(filename));

、私はWebServiceHostを使用していますを使用して、コンソールアプリケーションをテストしていますか? PS:アプリケーションには設定ファイルがありませんので、コードでこれを設定する方法を見ていきます。そうでなければ、設定ファイルが必要です。次に、内容は何でしょうか。

Notes: 私はこのリンクを見つけましたBad Request Error 400 - WCF Clientこれらのプロパティは、石鹸ベースのサービスにのみ有効であると説明されていました。彼はweb.configの更新を提案しました。これはコンソールアプリケーションなので、どうすればいいのでしょうか? '

答えて

1

あなたは、このようにプログラム的maximumreceivedmessageを設定することができます。

var binding = new wsHttpBinding(); // or whatever binding you are using 
binding.MaxReceivedMessageSize = Int32.MaxValue; 
var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 

うまくいけば、これはあなたの問題を解決するのに十分だろうが、あなたはまたに送信する前に、ビット(バッチ処理)にファイルを切り刻ん検討する必要がありますサーバー。非常に大量のデータを送信すると、クライアントがサーバーに送信する前にすべてのものをシリアル化してからサーバー側で逆シリアル化する必要があるため、大きなメモリー不利益を被ります。

編集:あなたの追加のコメント(下記)に基づいて、サービスをホストするアプリケーションのコードは次のようなものになります。

 WebServiceHost webServiceHost = new WebServiceHost(typeof(UploadService), uri); 
     WebHttpBinding binding = new WebHttpBinding(); 
     binding.MaxReceivedMessageSize = Int32.MaxValue; 
     webServiceHost.AddServiceEndpoint(typeof(IUploadService), binding, "WebServiceHost"); 
     webServiceHost.Open(); 
+0

こんにちは、私は安らかなwcf Webサービスを作成しています。以下はコード です。 'private static ServiceHost CreateWebServiceHost() { var uri = new Uri(SysValues。baseUrl); var svc = new WebServiceHost(typeof(UploadService)、uri); return svc; } ' これはすべてのコードです。どこでこれを設定しますか?私は明示的にバインディングを作成していないので、プロパティが見つかる場所はわかりません。 – ritcoder

+0

サービスエンドポイントを追加する方法を示すために、WebServiceHostを使用しているという事実に基づいて自分の回答を更新しました。これ以上の情報が必要な場合は教えてください:) – Franchesca

+0

まさに私が探していたものです。ありがとう。 – ritcoder

1

look at the documentationはありましたか?

コードと構成の両方をカバーします。

+0

をこんにちは、私はそのリンクを見てきましたが、私はどのように知りません私は明示的にバインディングを作成していないので、私に適用する。 – ritcoder

+0

まだバインディングを設定していなくても、バインディングを使用しています。設定を調整するには、httpBindingなどの標準バインディングを使用してバインドを設定し、必要に応じてプロパティを設定する必要があります。 IIS/WASでホストしている場合は、バインディングを設定する最も良い方法はweb.configに指定することです。 –

+0

私はコンソールアプリケーションを使用しています。これを行うために私はどのようなコードを書いていますか?私はこれのwebservicehostのインスタンスを作成しています。 'var svc = new WebServiceHost(typeof(UploadService)、uri)' – ritcoder

関連する問題