gpt4 book ai didi

c# - 在 WCF 数据服务中设置 KeepAlive

转载 作者:行者123 更新时间:2023-11-30 18:25:45 34 4
gpt4 key购买 nike

我正在使用 Microsoft 的“废弃软件”产品,称为“WCF 数据服务”。我希望我能在这里得到一些帮助。

我正在尝试将我的服务设置为在负载平衡器 (F5) 中工作。我遇到的问题也与我的正常 WCF 服务有关。基本上,F5 将连接视为“持久”连接。

要用我的 WCF 服务解决这个问题,我可以像这样将“KeepAliveEnabled”标志设置为 false:

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 数据服务客户端进行设置。 (客户端没有“端点”变量。)

有人知道如何为 Wcf 数据服务客户端将 KeepAlive 设置为 false 吗?

更新:

我试过这个:

entities.SendingRequest2 += EntitiesOnSendingRequest2;

private static void EntitiesOnSendingRequest2(object sender,
SendingRequest2EventArgs sendingRequest2EventArgs)
{
sendingRequest2EventArgs.RequestMessage.SetHeader("Keep-Alive", "false");
}

但似乎并没有什么帮助。

更新二:

我也在“EntitiesOnSendingRequest2”中尝试过这个:

sendingRequest2EventArgs.RequestMessage.SetHeader("Connection", "close");

但是我得到了一个错误,因为 Connection header 被限制了。

最佳答案

想通了。

有一个名为“SendingRequest”的事件可以被订阅。 (它已被弃用,但这并不重要,因为 Wcf 数据服务对 Microsoft 来说已经死了。由于最近 Microsoft 的关注时间很短,它永远不会被删除。)

该事件将允许您获取 WebRequest,它可以转换为 HttpWebRequest。

那么设置KeepAlive=false就很简单了;

entities.SendingRequest += EntitiesOnSendingRequest;


private static void EntitiesOnSendingRequest(object sender,
SendingRequestEventArgs sendingRequestEventArgs)
{
var webRequest = ((HttpWebRequest) sendingRequestEventArgs.Request);
webRequest.KeepAlive = false;
}

关于c# - 在 WCF 数据服务中设置 KeepAlive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686605/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com