小编Chr*_*her的帖子

如何配置C#Web服务客户端以并行发送HTTP请求标头和正文?

我使用的是VS2008 .Net 3.5中生成的传统C#Web服务客户端,继承自SoapHttpClientProtocol.这是连接到用Java编写的远程Web服务.

在客户端初始化期间,所有配置都在代码中完成,如下所示:

        ServicePointManager.Expect100Continue = false;
        ServicePointManager.DefaultConnectionLimit = 10;

        var client = new APIService
        {
            EnableDecompression = true,
            Url = _url + "?guid=" + Guid.NewGuid(),
            Credentials = new NetworkCredential(user, password, null),
            PreAuthenticate = true,
            Timeout = 5000 // 5 sec
        };
Run Code Online (Sandbox Code Playgroud)

一切正常,但执行最简单的方法调用所花费的时间几乎是网络ping时间的两倍.而Java测试客户端与网络ping时间大致相同:

C# client ~ 550ms
Java client ~ 340ms
Network ping ~ 300ms
Run Code Online (Sandbox Code Playgroud)

在分析会话的TCP流量后发现以下内容:

基本上,C#客户端按以下顺序发送TCP数据包.

Client Send HTTP Headers in one packet.
Client Waits For TCP ACK from server.
Client Sends HTTP Body in one packet.
Client Waits …
Run Code Online (Sandbox Code Playgroud)

c# client web-services http soaphttpclientprotocol

8
推荐指数
1
解决办法
1816
查看次数

标签 统计

c# ×1

client ×1

http ×1

soaphttpclientprotocol ×1

web-services ×1