我写了一个测试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并没有安全性。
谢谢,
阿尔贝托
答案 0 :(得分:1)
默认情况下,最大传输大小非常低,内存为64K。您可以在配置文件中调整名为maxReceivedMessageSize的连接上的参数。
答案 1 :(得分:0)
你可能只是花了太多时间在堆上创建2481个字符串,但不太可能,或者你正在超出一些maxsize限制等。但这是我的猜测。解决WCF服务问题的最佳方法是启用跟踪,然后使用svctraceviewer工具检查跟踪。日志非常详细,应该查明问题。