我们有几个客户端(10s)使用端点连接我们的WCF服务器,目前他们都在使用此代码。
我们可以在web.config中指定所有设置,例如由于我们的WCF Web服务托管在一个单独的服务器上,只是忽略客户端提供给我们的东西,我希望它们不提供超时和绑定等值,我查看了证书身份验证但不是我们想要的,因为客户端将来会增加。
HttpClientCredentialType credType = myCred.httpClientCredentialType;
//Set the binding security & authentication type
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = credType;
TimeSpan ts = new TimeSpan(0, 0, 10, 0);
binding.CloseTimeout = ts;
binding.OpenTimeout = ts;
binding.ReceiveTimeout = ts;
binding.SendTimeout = ts;
//set the webservice endpoint address
EndpointAddress endpoint = new EndpointAddress(someURL + "/_vti_bin/ourWCF/fruits.svc");
ChannelFactory<WebServices.Internal.IFruits> factory = new ChannelFactory<WebServices.Internal.IFruits>(binding);
factory.Credentials.Windows.ClientCredential = myCred;
factory.Credentials.UserName.UserName = myCred.UserName;
factory.Credentials.UserName.Password = myCred.Password;
WebServices.Internal.IFruits proxy = factory.CreateChannel(endpoint);
string someThing = proxy.GetFruitsList();
答案 0 :(得分:1)
您只能控制自己的主机设置;你无法控制客户的行为。如果他们想将连接超时设置为1秒,那么主机管理员/程序无法做到这一点。除非......
如果您对潜在客户有足够的控制权以坚持使用客户端DLL / Exe来建立和维护与主机的连接,那么您可以按照自己的方式设置客户端配置。但是如果你有iOS,Android,Windows等客户端都在全世界范围内点击你的服务,那么你就会遇到他们正在使用的任何客户端配置。