在运行时更改ServiceHost EndPoint地址C#

时间:2015-02-06 11:18:47

标签: c# wcf service servicehost

我正在忙着编写一个文件服务器/客户端工具,它基本上使用托管服务来发送和接收来自服务器的数据。由于此解决方案将被许多不同的人使用,因此不建议他们去编辑App.Config文件以进行设置。我想要做的是在运行时更改它,以便用户可以完全控制要使用的设置。所以,这是我的App.Config文件:

<system.serviceModel>
        <services>
            <service name="FI.ProBooks.FileSystem.FileRepositoryService">
                <endpoint name="" binding="netTcpBinding"
                    address="net.tcp://localhost:5000"
                    contract="FI.ProBooks.FileSystem.IFileRepositoryService"
                    bindingConfiguration="customTcpBinding" />
            </service>
        </services>
        <bindings>
            <netTcpBinding>
                <binding name="customTcpBinding" transferMode="Streamed" maxReceivedMessageSize="20480000" />
            </netTcpBinding>
        </bindings>
    </system.serviceModel>

我想要做的是在执行应用程序时只更改地址(在本例中为net.tcp:// localhost:5000)。因此,我必须能够读取当前值并将其显示给用户,然后将其输入并将其保存回该字段。

2 个答案:

答案 0 :(得分:0)

您可以创建提供配置名称和端点的服务实例。所以你可以使用;

EndpointAddress endpoint = new EndpointAddress(serviceUri);
var client= new MyServiceClient(endpointConfigurationName,endpoint )

查看msdn文章。

答案 1 :(得分:0)

以下测试可能会对您有所帮助。基本上步骤是

  • 实例化从.config文件读取配置的主机实例;
  • 使用与旧版本相同的配置创建EndpointAddress的新实例,但更改uri并将其分配给Address的{​​{1}}属性。

    ServiceEndpoint