如果我向数组添加1个元素,则WCF超时

时间:2009-07-22 09:55:53

标签: wcf performance

我写了一个测试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";
    }

如果我尝试生成字符串[x],其中x <= 2480,服务在不到5秒内应答,否则发生超时(我将其设置为1分钟)。

为什么在4秒内返回2480的字符串[],并且字符串[]为2481会导致超时。

我想我必须更改配置设置,但我不知道哪一个。

我使用wsHttpBinding和reliableSession并没有安全性。

谢谢,

阿尔贝托

2 个答案:

答案 0 :(得分:1)

默认情况下,最大传输大小非常低,内存为64K。您可以在配置文件中调整名为maxReceivedMessageSize的连接上的参数。

答案 1 :(得分:0)

你可能只是花了太多时间在堆上创建2481个字符串,但不太可能,或者你正在超出一些maxsize限制等。但这是我的猜测。解决WCF服务问题的最佳方法是启用跟踪,然后使用svctraceviewer工具检查跟踪。日志非常详细,应该查明问题。

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