在不使用配置文件和使用默认构造函数实例化代理客户端的情况下配置WCF

在不使用配置文件和使用默认构造函数实例化代理客户端的情况下配置WCF,wcf,channelfactory,wcf-configuration,Wcf,Channelfactory,Wcf Configuration,老实说,我不确定这是否可能 我想知道是否有一种方法可以删除配置文件的使用,而不必覆盖客户端代理的创建。让我举一个例子: 在客户端应用程序中,我们有一个WCF DAL项目。这是客户端应用程序使用的WCF服务器的包装。目前,客户端应用程序需要配置文件中给出的所有绑定和端点,并且通常(在我们的项目中)会执行以下操作来包装WCF服务: public MyObject GetMyObject(int id) { using(var service = new MyObjectDataService

老实说,我不确定这是否可能

我想知道是否有一种方法可以删除配置文件的使用,而不必覆盖客户端代理的创建。让我举一个例子:

在客户端应用程序中,我们有一个WCF DAL项目。这是客户端应用程序使用的WCF服务器的包装。目前,客户端应用程序需要配置文件中给出的所有绑定和端点,并且通常(在我们的项目中)会执行以下操作来包装WCF服务:

public MyObject GetMyObject(int id)
{
    using(var service = new MyObjectDataServiceClient())
    {
         return service.GetMyOBject(id);
    }
}
这将创建对服务器的调用并获取一个对象。如果客户端应用程序没有绑定和端点,它将崩溃。我们可以更改数据服务客户端的每次创建以创建绑定和端点,或者创建我们自己的chanelfactory来为我们执行此操作,但这意味着更改当前的WCF DAL层代码

我的目标是尝试并创建一种将进程插入WCF DAL层的方法,该层将处理绑定和端点,而不必更改使用代码,同时消除对配置文件的需求


到目前为止,我的想法是尝试使用TT文件,以便创建数据服务客户机的部分类并覆盖channel factory部分。这失败了,因为数据服务客户端的构造函数调用直接进入抽象类(System.ServiceModel.ClientBase)并尝试获取配置内容。我无法找到一种方法来阻止它通过这个分部类在配置中查看,并且不更改WCF DAL服务层。

如果在DAL上有绑定和端点,则可以使用不同的客户端类构造函数(采用绑定+端点地址的构造函数)。该构造函数完全绕过了配置,所以您不需要在配置中设置任何内容。

Hi,我在帖子中提到,我确实希望避免DAL层中的任何更改。这样做的原因是尝试并创建一个实用程序,该实用程序可用于多个项目,以删除配置元素以及已设置其服务客户端的项目。我的中途解决方案是按照您的建议执行,或者使用带有绑定和端点的channelfactory,但这确实需要更改客户端DAL层。谢谢,您需要将绑定/地址传递到某个地方,因此如果您无法更改现有客户端,则需要在创建WCF proxy.yep的层中执行,这就是为什么我尝试使用TT文件为每个客户端代理生成一个分部类并在其中重写它。但是我没能让它停止在那里检查并使用我的配置。是的,那不行。不能通过使用分部类来更改分部类(当前客户端类)中构造函数的行为。不幸的是,您有两种选择,一种是更改DAL(您甚至可以添加一些逻辑来检测是否存在配置,如果存在,则通过将“*”传递给采用端点配置名称的构造函数来继续使用它),这样就不会破坏预存的客户端,或者自己更换客户。这是我得出的结论。我希望servicemodel.clientbase类中可能有一些我可能错过的东西,我可以通过一些设置(不知道如何设置,而且很难做到)来避免这种情况。谢谢你的帮助和建议。