我有一堆自托管的WCF服务。一切正常,但我正在寻找规范化/简化结果配置的方法。我尽可能地简化了它,但我仍然不高兴。目前,我的配置如下所示:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="BindingConfiguration" ...>
...
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
...
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Name1">
<endpoint address="net.tcp://localhost:8080/name1" binding="netTcpBinding" bindingConfiguration="BindingConfiguration" contract="Contract1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
<service behaviorConfiguration="ServiceBehavior" name="Name2">
<endpoint address="net.tcp://localhost:8080/name2" binding="netTcpBinding" bindingConfiguration="BindingConfiguration" contract="Contract2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
...
</services>
</system.serviceModel>
总之,我有6个服务,所以它是重复的。理想情况下,我想:
首先,我知道base addresses,但这只适用于服务级别,而不适用于单独的服务。至于我的第二点,我已经尝试将身份信息移动到端点行为中,但似乎不支持。
我有什么办法可以简化此配置吗?或者是我唯一可以选择切换到基于代码的配置方法吗?
答案 0 :(得分:1)
不幸的是,正如您自己注意到的那样 - 基本地址概念仅在每个服务级别上 - 所以如果您有给定服务的许多端点,那么您可以使用它。
您真正唯一的选择是使用其他一些配置基址的方法,然后使用它来在代码中创建服务端点。如果您自行托管您的服务,则可以在主机代码中执行此操作,然后再致电ServiceHost.Open()
- 如果您在IIS中托管,则必须创建自己的自定义ServiceHostFactory
来执行所有这些设置,然后使用该自定义服务主机工厂在IIS中创建服务主机。
两者都可以通过可管理的努力来实现 - 问题是这对你来说是否值得为之付出麻烦,但我们无法在你的位置做出决定......