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();

WCF所有客户端都使用web.config值,而与客户端提供的设置无关

您只能控制自己的主机设置;你无法控制客户端的操作。如果他们想将连接超时设置为1秒,作为主机管理员/程序,你对此无能为力。除非

如果你对你的潜在客户有足够的控制权,坚持要求他们使用你的客户端DLL/Exe来建立和维护与主机的连接,那么你可以按照你想要的方式设置客户端配置。但如果你的iOS、Android、Windows等客户端都从世界各地访问你的服务,无论他们使用什么客户端配置,您都会遇到问题。