是否可以使用两种行为配置的服务?如您所知,可以有一个服务和多个端点,您可以在其中指定不同的绑定配置。 但是,对于相同的服务,我需要具有不同的服务行为。
如果我尝试这样的话:
<services>
<service name="Service.Service1" behaviorConfiguration="Behavior1">
<host>
<baseAddresses>
...
</baseAddresses>
</host>
<endpoint ...>
</endpoint>
</service>
<service name="Service.Service1" behaviorConfiguration="Behavior2">
<host>
<baseAddresses>
...
</baseAddresses>
</host>
<endpoint ...>
</endpoint>
</service>
</services>
...我收到错误“在相同的配置范围内已经存在一个名为'service'且具有相同密钥的子元素”
我知道我可以创建继承原始服务类的新类但是有更好的解决方案吗?
答案 0 :(得分:2)
似乎您应该使用其他服务名称注册相同的服务类。服务行为是服务配置的一部分,因此如果要使用不同的行为,则应配置不同的服务。我向你提出的问题:如果你有一项服务有两种行为,wcf将如何决定使用这种或另一种? 为什么你的继承解决方案不好?
答案 1 :(得分:1)
相当有趣的问题......我不确定我所描述的内容是否可行,但解决方案将如下所示:
另一种方法是在应用程序初始化时注入从Service.Service1继承的名为“Service.Service1.Entry1”的动态类型。这部分是非常可能的 - 即对于每个提到的服务,您将在应用启动时动态创建n个子类型,以便您可以按预期使用它们。