2009-07-22 16 views
0

メソッドのパラメータとして文字列配列を返すテストWCFサービスを作成しました。配列に1要素を追加するとWCFのタイムアウトが発生する

public class XNS_Test : IXNS_Test { 
    public string[] testString(int num) { 
     string[] s = new string[num]; 
     for(int i = 0; i < num; i++) { 
      s[i] = "abcde"; 
     } 
     return s; 
    }} 

私はそれが取るどのくらいの時間を確認するためにフォームアプリケーションを書いた:

private void button1_Click(object sender, EventArgs e) { 
     int num = Convert.ToInt32(textBox1.Text); 
     int[] intArr; 
     string[] stringArr; 

     TimeSpan start = DateTime.Now.TimeOfDay; 
     try { 
      XNS_Test.XNS_TestClient client = new testWCFServices.XNS_Test.XNS_TestClient(); 
      if(((Button)sender).Name == "button2") 
       intArr = client.testInt(num); 
      else 
       stringArr = client.testString(num); 
     } 
     catch { } 
     TimeSpan stop = DateTime.Now.TimeOfDay; 
     label1.Text += num.ToString() + " elements: " + stop.Subtract(start).ToString() + "\n"; 
    } 

私は文字列を生成しようとした場合= 2480 [X]ここで、x <少ないし、5秒でサービスの答えをそれ以外の場合はタイムアウトが発生します(1分に設定されます)。

なぜ2480の文字列[]が4秒で返され、2481の文字列[]がタイムアウトを引き起こすのですか?

私は設定を変更する必要があると思いますが、どの設定かわかりません。

私はreliableSessionとセキュリティなしでwsHttpBindingを使用します。

おかげで、

アルベルト

答えて

1

最大転送サイズは、メモリからデフォルト、64Kによって非常に低いです。設定ファイルで、maxReceivedMessageSizeという接続のパラメータを調整できます。

+0

YESSSSSS! 完了! ありがとうございました! 私は狂っていた!あなたは私を救いました!ありがとう! – Alberto

0

あなただけでヒープ上に2481個の文字列を作成するには、あまりにも多くの時間を割いて、しかし、そうか、しかし、これは私の推測であるあなたには、いくつかのMAXSIZE制限などをexceddingされている可能です。 WCFサービスの問題をトラブルシューティングするための最良の方法は、トレースを有効にしてから、svctraceviewerツールを使用してトレースを調べることです。ログは非常に詳細で、問題点を特定する必要があります。

http://msdn.microsoft.com/en-us/library/ms733025.aspx

関連する問題