我正在使用" abandonware"来自Microsoft的产品称为" WCF数据服务"。我希望我能在这里得到一些帮助。
我正在尝试将我的服务设置为在负载均衡器(F5)中工作。我遇到的问题我也使用了正常的WCF服务。基本上,F5认为连接是一种“持久性”的连接。连接。
要使用我的WCF服务修复此问题,我可以设置" KeepAliveEnabled"像这样标记为假:
var endpointAddress = new EndpointAddress(new Uri("http://someAdrs/MyWcfService.svc"));
MyWcfClient client = new MyWcfClient (new BasicHttpBinding(), endpointAddress);
var customBinding = new CustomBinding(client.Endpoint.Binding);
var transportElement = customBinding.Elements.Find<HttpTransportBindingElement>();
transportElement.KeepAliveEnabled = false;
client.Endpoint.Binding = customBinding;
正如我所说,这对我的WCF服务很有用。但我似乎无法找到一种方法来设置WCF数据服务客户端。 (客户端没有&#34; Endpoint&#34;变量。)
任何人都知道如何为Wcf数据服务客户端将KeepAlive设置为false?
更新
我试过了:
entities.SendingRequest2 += EntitiesOnSendingRequest2;
private static void EntitiesOnSendingRequest2(object sender,
SendingRequest2EventArgs sendingRequest2EventArgs)
{
sendingRequest2EventArgs.RequestMessage.SetHeader("Keep-Alive", "false");
}
但它似乎没有帮助。
更新II:
我在&#34; EntitiesOnSendingRequest2中尝试了这个:
sendingRequest2EventArgs.RequestMessage.SetHeader("Connection", "close");
但我收到错误,因为Connection标头是受限制的。
答案 0 :(得分:0)
想通了。
有一个名为“SendingRequest”的事件可以订阅。 (它已被弃用,但这并不重要,因为Wcf数据服务对微软来说已经死了。由于微软目前的短暂关注,它永远不会被删除。)
该事件将允许您访问WebRequest,可以将其转换为HttpWebRequest。
然后设置KeepAlive = false;
就很简单了entities.SendingRequest += EntitiesOnSendingRequest;
private static void EntitiesOnSendingRequest(object sender,
SendingRequestEventArgs sendingRequestEventArgs)
{
var webRequest = ((HttpWebRequest) sendingRequestEventArgs.Request);
webRequest.KeepAlive = false;
}