C# 在WCF中强制关闭与HttpClient的连接
我们正在使用WCF()的“Rest工具箱”中的HttpClient类来集成我们创建的Rest服务器 服务器当前总是关闭连接,不管“connection”头是什么(它正在开发中,所以现在还可以) 如何告诉HttpClient实例始终关闭连接(或接受服务器关闭连接)?我尝试添加“Connection:close”标题,但结果是出现了一个exeption(“Connection”不是允许的标题)。我还尝试设置DefaultHeaders.Connection.Close=true,但这似乎没有任何区别。在文章完成后,我仍然可以看到与netstat的连接 (正文和uri是字符串)C# 在WCF中强制关闭与HttpClient的连接,c#,wcf,http,rest,C#,Wcf,Http,Rest,我们正在使用WCF()的“Rest工具箱”中的HttpClient类来集成我们创建的Rest服务器 服务器当前总是关闭连接,不管“connection”头是什么(它正在开发中,所以现在还可以) 如何告诉HttpClient实例始终关闭连接(或接受服务器关闭连接)?我尝试添加“Connection:close”标题,但结果是出现了一个exeption(“Connection”不是允许的标题)。我还尝试设置DefaultHeaders.Connection.Close=true,但这似乎没有任何区别
这里的问题是,下一次我们发帖子的时候,电话就被屏蔽了。我们认为这是由于客户端保持连接的活动性,而服务器不支持这一事实 处理完响应后,您是否尝试过处理它
// do stuff
res.Dispose();
或
您处理完响应后是否尝试过处理它
// do stuff
res.Dispose();
或
我编写了大部分HttpClient代码;以下是一些想法: 您不需要告诉HttpClient接受服务器关闭连接——它应该自动工作——无论客户端是否包含“connection:close”头,服务器都可以关闭连接 使用response.Dispose()--在读取挂起的字节之前,基础连接可能无法启动新连接/发送字节 client.DefaultHeaders.Add(“连接”、“关闭”);应该有效——如果您遇到异常,请在codeplex站点上打开一个问题 您可以检查response.Request.Headers以查看线路上发生了什么 您可以跳过Post(newuri(x))中的“newuri()”——传递一个字符串将为您调用正确的构造函数(newuri(x,UriKind.RelativeOrAbsolute))
默认情况下,超时与HttpWebRequest相同——您可能希望通过client.TransportSettings.ReadWriteTimeout/client.TransportSettings.ConnectionTimeout将其关闭,以区分永久阻塞和超时我编写了大部分HttpClient代码;以下是一些想法: 您不需要告诉HttpClient接受服务器关闭连接——它应该自动工作——无论客户端是否包含“connection:close”头,服务器都可以关闭连接 使用response.Dispose()--在读取挂起的字节之前,基础连接可能无法启动新连接/发送字节 client.DefaultHeaders.Add(“连接”、“关闭”);应该有效——如果您遇到异常,请在codeplex站点上打开一个问题 您可以检查response.Request.Headers以查看线路上发生了什么 您可以跳过Post(newuri(x))中的“newuri()”——传递一个字符串将为您调用正确的构造函数(newuri(x,UriKind.RelativeOrAbsolute)) 默认情况下,超时与HttpWebRequest相同--您可能希望通过client.TransportSettings.ReadWriteTimeout/client.TransportSettings.ConnectionTimeout将其关闭,以区分永久阻塞和超时HttpClient中的IDisposable.Dispose(bool)实现为空。IDisposable.Dispose(bool)HttpClient中的实现为空。
using (HttpResponseMessage res = client.Post(new Uri(uri), content))
{
// do stuff
}