WCF所有客户端都使用web.config值,而与客户端提供的设置无关
本文关键字:客户端 设置 config web WCF | 更新日期: 2023-09-27 18:20:31
我们有几个客户端(10个)使用端点连接我们的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();
您只能控制自己的主机设置;你无法控制客户端的操作。如果他们想将连接超时设置为1秒,作为主机管理员/程序,你对此无能为力。除非
如果你对你的潜在客户有足够的控制权,坚持要求他们使用你的客户端DLL/Exe来建立和维护与主机的连接,那么你可以按照你想要的方式设置客户端配置。但如果你的iOS、Android、Windows等客户端都从世界各地访问你的服务,无论他们使用什么客户端配置,您都会遇到问题。