这是方案,
我们在应用程序服务器上安装了IIS托管Web服务,现在我们有另一个托管代码的应用程序服务器,并通过创建通道和提供超时绑定来调用IIS托管的Web服务。
现在无论我们在WCF服务器绑定中设置超时值,它们总是被客户端绑定覆盖。 我们是否有办法强制优先处理服务器绑定。特别适用于超时
因为我们使用的K2工作流无法添加服务引用,所以我们无法以这种方式添加服务,我们必须将其添加为dll,然后创建频道,如下面的代码所示,
代码:
System.Net.NetworkCredential creds = GetCreadentials();
HttpClientCredentialType credType = creds.httpClientCredentialType;
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = credType;
EndpointAddress endpoint = new EndpointAddress(Url + "/_vti_bin/FruitFactory/Fruits.svc");
ChannelFactory<Fruits.Internal.IFruits> factory = new ChannelFactory<Fruits.Internal.IFruits>(binding);
factory.Credentials.Windows.ClientCredential = creds;
factory.Credentials.UserName.UserName = creds.UserName;
factory.Credentials.UserName.Password = creds.Password;
Fruits.Internal.IFruits proxy = factory.CreateChannel(endpoint);
proxy.GetFruitCratesData(true);
修改
我知道如何在客户端代码中使用超时绑定,但这是我不想要的,我不希望我的服务使用客户端绑定。
答案 0 :(得分:-2)
您可以强制客户端使用服务器的设置。但您可以在代码中设置超时
binding.OpenTimeout = new TimeSpan(0, 10, 0);
binding.CloseTimeout = new TimeSpan(0, 10, 0);
binding.SendTimeout = new TimeSpan(0, 10, 0);