如何为在联网计算机上运行的客户端配置WCF服务?

时间:2009-01-05 17:24:40

标签: c# c#-3.0 wcf wcf-binding

我刚刚创建了一个WCF服务/客户端,在同一台机器上运行时一切正常。但无法弄清楚如何配置它在不同的机器上运行。你知道吗?

目前,URI设置为http://localHost:8000 ......

但我想我想要像net.tcp:// MyServer:8000 ...... ..

任何想法都会很棒。 感谢。

2 个答案:

答案 0 :(得分:1)

从听起来,您将服务和客户端都放在同一个可执行文件中。虽然可以这样做,但是当您希望它们位于不同的计算机上时,您需要拥有服务的可执行文件/主机(自托管或IIS)和客户端的可执行文件。每个都需要在相应的配置部分中使用地址,绑定和合同进行正确配置。所以在服务器上你会有这样的东西:

<configuration>
    <system.serviceModel>
        <services>
            <service name="YourService">
                <endpoint address="http://MyServer:8000/..."
                          binding="BasicHttpBinding"
                          contract="Your.IContract" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

在客户端,你有这个:

<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="http://MyServer:8000/..."
                      binding="BasicHttpBinding"
                      contract="Your.IContract"
                      name="ClientEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

主要是确保客户端和服务器可以通过指定的端口和协议相互通信(主要是确保防火墙不阻止通信)。另一件需要注意的事情是更改绑定协议可能会影响服务的其他方面(安全性很大,但也可以使用服务做什么)。

答案 1 :(得分:0)

此处没有足够的信息来回答您的问题。

假设您没有通过代码在ServiceHost和代理中设置地址/绑定/合同信息,您需要发布配置文件的部分。

如果您在代码中执行此操作,则需要显示正在使用的代码。

据我所知,您似乎可能与传输绑定不匹配。服务和客户端必须在同一个传输上(http,tcp,命名管道等)。