针对不同Server实现的WCF基址配置

时间:2014-06-23 04:23:50

标签: c# wcf wcf-configuration base-address

我不知道这是否是重复的问题,但由于我的搜索,我找不到任何相关的问题。

我已经制作了WCF服务,但它运行正常。现在我想部署它并将其用作我的项目中的参考,这将在不同的地方使用。

当我想在他的服务器中为客户端安装我的软件时,我需要将基地址更改为服务器中的相应IP地址。另外,不同客户端的不同服务器可能有不同的IP地址,我不想为每个客户端部署一个具有特定基地址的wcf服务。

您能提出任何建议,并告诉我这方面的最佳解决方案。

在我的服务中,我使用两个基本地址,如下所示:

<add baseAddress="localhost:8080/"/>;

另一个像net.tcp绑定一样。我想知道在我的服务部署在客户端服务器中时如何使用IP地址而不是localhost

3 个答案:

答案 0 :(得分:0)

在Visual Studio中的应用程序项目源代码中,您将拥有app.config或web.config或您添加的类似.config文件。我假设在您的部署代码(您的Windows服务,PowerShell或其他)中,您正在目标服务器或计算机上创建此.CONFIG文件的副本。

因此,在您的原始(项目源代码版本)中,您有令牌而不是实际的服务器名称或IP地址。例如,如果您的实际主机名是&#34; localhost&#34;,而不是

<add baseAddress="localhost:8080/" />

你应该:

<add baseAddress="[ServerName]:[Port]/" />

其中&#34; [ServerName]&#34;和#34; [港口]&#34;是以后要替换的令牌。在部署脚本中,查找这些令牌并将其替换(简单字符串替换)与实际服务器的DNS名称或IP地址。您可以从用于从Windows服务部署到该服务器的任何机制获取服务器名称或IP地址。

希望它有所帮助,如果您需要更多帮助,请告诉我。

答案 1 :(得分:0)

<add baseAddress="net.tcp://xx.xx.xxx.xxx:808/">
<add baseAddress="http://xx.xx.xxx.xxx:8080/">

第一个用于TCP,第二个用于http绑定,其中xx.xx.xxx.xxx是托管服务的ip。

答案 2 :(得分:0)

服务器方面,您需要将其放入配置文件(app.configweb.config)中:

<services>
   <service name="YourServiceNameHere" ......>
      <host>
         <baseAddresses>
            <add baseAddress="http://YourServerName:Port/SameBaseUrl"/>
            <add baseAddress="net.tcp://YourServerName:Port/SameBaseUrlForTcp"/>
         </baseAddresses>
      </host>
      <endpoint name="DefaultEndpoint" address="MyAwesomeService" ... />
      .........
   </service>
</services>

或任何你想要/需要的东西。

客户端方面 - 您不能拥有基本地址 - 每个端点必须完全引用一个明确定义的服务器端地址:

<client> 
   <endpoint name=".." 
             address="http://YourServerName:Port/SameBaseUrl/MyAwesomeService"
             binding="basicHttpBinding" 
             contract="IYourServiceContract" />
</client>