1

当我的 nettcpbinding 在客户端的 c# 代码中设置并且在服务器上我的绑定在 app.config 中定义时,如何动态设置像 NONE 这样的安全模式?如何从客户端更改服务器的 app.config?

WCF 服务器端点:

 <service name="Test.ServiceProvider.MyService">
            <endpoint address="" binding="netTcpBinding" contract="Test.Contracts.IMyService">
              <identity>
                  <dns value="localhost" />
              </identity>
            </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" name="NetTcpMetadataPoint" 
         contract="IMetadataExchange">
        </endpoint>
        </service>

WCF 客户端端点:Uri 是:

net.tcp//localhost:12345/MyService

    1.) What else should my 2nd address be for the 2nd NetTcpBinding?
I guess I just change the MyService to MyEncryptedService and use the same interface? But then I have 2 equal classes/implementations of one interface. Thats stupid actually.
    2.) How does the client binding find its server binding?
4

1 回答 1

2

简而言之,你不能。服务器公开服务并且服务器指示其安全设置。它要么需要安全性,要么不需要安全性,但此配置是在服务器开始托管服务时完成的,并且在不“停止”服务的情况下无法更改。从客户端更改它的唯一方法是通过一些“管理”,这将更改服务的配置并重新启动它,但这将具有全局范围。

如果您需要安全和不安全的通信,则需要公开两个不同的端点。一种用于安全操作,一种用于不安全操作(如果两个端点上的操作不同,您还应该使用不同的服务合同)。

于 2012-04-12T13:20:48.417 回答