0

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

我做了一个 WCF 服务,它工作正常。现在我想部署它并在我的项目中使用它作为参考,它将在不同的地方使用。

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

您能否提出任何建议并告诉我该领域的最佳解决方案是什么。

在我的服务中,我使用两个这样的基地址:

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

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

4

3 回答 3

0

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

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

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

你应该有:

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

其中“[ServerName]”和“[Port]”是稍后要替换的标记。在您的部署脚本中,查找这些令牌并将它们(简单的字符串替换)替换为实际服务器的 DNS 名称或 IP 地址。您可以从您用于从 Windows 服务部署到该服务器的任何机制中获取服务器名称或 IP 地址。

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

于 2014-06-23T06:10:21.840 回答
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。

于 2014-06-23T06:20:38.513 回答
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> 
于 2014-06-23T09:32:38.000 回答