在不同端点上实现多个协定的服务类的WCF配置
我有一个在不同端点上实现多个协定的服务类的WCF配置,wcf,Wcf,我有一个MyService类实现IService1和IService2接口。我想在两个不同的端点上公开这两个契约,如: IService1在/Service/S1 IService2在/Service/S2 这样的配置看起来怎么样?试试这个 <services> <service name="Service"> <endpoint address="http://localhost:8080/Service/S1"
MyService
类实现IService1
和IService2
接口。我想在两个不同的端点上公开这两个契约,如:
在IService1
/Service/S1
在IService2
/Service/S2
<services>
<service name="Service">
<endpoint address="http://localhost:8080/Service/S1"
binding="basicHttpBinding"
contract="IService1"
/>
<endpoint address="http://localhost:8080/Service/S2"
binding="basicHttpBinding"
contract="IService2 "
/>
</service>
</services>
试试这个
<services>
<service name="Service">
<endpoint address="http://localhost:8080/Service/S1"
binding="basicHttpBinding"
contract="IService1"
/>
<endpoint address="http://localhost:8080/Service/S2"
binding="basicHttpBinding"
contract="IService2 "
/>
</service>
</services>
您可以使用具有两个端点的服务,如下所示:
<services>
<service name="MyNamespace.MyService">
<endpoint address="/Service/S1"
binding="basicHttpBinding"
contract="IService1" />
<endpoint address="/Service/S2"
binding="basicHttpBinding"
contract="IService2 " />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/"/>
</baseAddresses>
</host>
</service>
</services>
编辑:添加了基址您可以使用具有两个端点的服务,如下所示:
<services>
<service name="MyNamespace.MyService">
<endpoint address="/Service/S1"
binding="basicHttpBinding"
contract="IService1" />
<endpoint address="/Service/S2"
binding="basicHttpBinding"
contract="IService2 " />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/"/>
</baseAddresses>
</host>
</service>
</services>
编辑:添加的基址似乎不是我想要的。MyService类是一个实现两个接口的类:IService1和IService2。根据service.name属性必须映射到类型名称。如果MyService是实现契约的唯一类型,那么它在配置中不能使用两次。@Marcin Seredynski:你说得对-服务类在配置中不能使用两次-只有一种可能。但是:您仍然可以在两个单独的地址上定义两个单独的端点,一个用于服务类实现的每个契约-这就是您想要的,不是吗?这似乎不是我想要的。MyService类是一个实现两个接口的类:IService1和IService2。根据service.name属性必须映射到类型名称。如果MyService是实现契约的唯一类型,那么它在配置中不能使用两次。@Marcin Seredynski:你说得对-服务类在配置中不能使用两次-只有一种可能。但是:您仍然可以在两个单独的地址上定义两个单独的端点,一个用于服务类实现的每个契约-这就是您要寻找的,否??由于某种原因,这种方法不起作用:服务无法启动。System.InvalidOperationException:找不到与绑定BasicHttpBinding的终结点的方案http匹配的基址。注册的基址方案为[]。请注意,我正在通过向ServiceHost传递服务实例和端点Uri来实例化ServiceHost。由于某些原因,此方法不起作用:无法启动服务。System.InvalidOperationException:找不到与绑定BasicHttpBinding的终结点的方案http匹配的基址。注册的基址方案是[]。请注意,我正在通过向ServiceHost传递服务实例和端点Uri来实例化ServiceHost。