无论客户端提供什么设置,WCF所有客户端都使用web.config值

时间:2014-09-03 08:43:28

标签: c# wcf

我们有几个客户端(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();

1 个答案:

答案 0 :(得分:1)

您只能控制自己的主机设置;你无法控制客户的行为。如果他们想将连接超时设置为1秒,那么主机管理员/程序无法做到这一点。除非......

如果您对潜在客户有足够的控制权以坚持使用客户端DLL / Exe来建立和维护与主机的连接,那么您可以按照自己的方式设置客户端配置。但是如果你有iOS,Android,Windows等客户端都在全世界范围内点击你的服务,那么你就会遇到他们正在使用的任何客户端配置。