我有一个包含几个WCF服务的程序集,每个服务都有自己的合同。这一切都很好。在App.config该服务的服务配置是这样的:几个WCF服务可以共享一个公共BaseAddress吗?
<services>
<service behaviorConfiguration="WcfService.AlyzaServiceBehavior"
name="Sam.Alyza.WcfService.ServiceWebsites">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceWebsites">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/Websites/" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Sam.Alyza.WcfService.LogReaderServiceBehavior"
name="Sam.Alyza.WcfService.ServiceLogReader">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceLogReader">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/LogReader/" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Sam.Alyza.WcfService.ServiceSystemverwaltungBehavior"
name="Sam.Alyza.WcfService.ServiceSystemverwaltung">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceSystemverwaltung">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/Systemverwaltung/" />
</baseAddresses>
</host>
</service>
[...]
</services>
因为我有一记大项目,更多的合同,我希望有一种方法来共享之间的BaseAddress不同的服务合同。
如果这只是一个具有不同契约和端点的服务,我可以设置一个ommon baseaddress,但是如何为多个服务设置一个通用baseaddress?
当然,我需要为客户端类似的东西。
另一点是baseAddress不过是当前的位置,可以这么说。这个想法是所有的端点通常都是相对于baseAddress的。因此,如果您试图跨所有服务共享相同的baseAddress,则会限制您的部署选项。 – 2009-01-12 20:40:16
如果您正在寻找一种简化配置的方法,您将不得不切换到使用代码而不是配置接线。您可以编程方式创建ServiceHost和ServiceEndpoint实例,并可能从数据库中提取Uri.AbsolutPath值。 – 2009-01-12 20:43:02