gpt4 book ai didi

wcf - 如何在运行时更改 basicHttpBinding sendTimeout?

转载 作者:行者123 更新时间:2023-12-04 19:27:17 26 4
gpt4 key购买 nike

我有一个使用 WCF 让两个应用程序相互通信的小型基本工作示例。我的客户端应用程序监听服务器,在配置我的设置的 app.config 文件中有 XML。在编译时硬编码的一项设置是隐藏在 basicHttpBinding 设置下的 sendTimeout 设置。例如:

<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IScriptRunHost" closeTimeout="00:05:00"
openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:00:15"

我希望能够在运行时设置 sendTimeout 属性(使用 c#)。但是对 WCF 这么陌生,我不知道从哪里开始?

最佳答案

您可以在配置文件中的代码中执行任何操作。您可以通过创建新的客户端代理并在运行时为其分配所需的绑定(bind)配置来动态设置超时或各种配置细节:

ServiceClient _client = new ServiceClient(new BasicHttpBinding { SendTimeout = new TimeSpan(2, 0, 0) },new EndpointAddress("http://localhost:8089/MyService.svc"));

或:

BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.OpenTimeout = new TimeSpan(2, 0, 0);
myBinding.CloseTimeout = new TimeSpan(2, 0, 0);
myBinding.SendTimeout = new TimeSpan(2, 0, 0);

ServiceClient _client = new ServiceClient();
_client.Endpoint.Binding = myBinding;

但是您可以通过查看代码推断出,如果您想在运行时更改超时值、服务端点或几乎任何绑定(bind)配置,则必须拆除以前的客户端代理并处理它并使用您创建的新代理,显然这会产生一些不良影响,因为您的客户将暂时与您的服务断开连接,因此请记住这一点。您还可以在配置文件中定义 2 或 3 个(或任意数量)绑定(bind)配置,并创建一个新客户端并将其配置为使用该绑定(bind),这几乎与在代码中执行此操作相同。即使这样,您也必须实例化一个新的客户端代理才能使用不同的绑定(bind)配置。

关于wcf - 如何在运行时更改 basicHttpBinding sendTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901902/

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