2012-04-12 6 views
1

Wie kann ich dynamisch den Sicherheitsmodus wie keine festlegen, wenn meine nettcpbinding in C# -Code auf der Clientseite festgelegt ist und auf dem Server meine Bindung in der App definiert ist .config? Wie kann ich die app.config des Servers vom Client ändern?Ändern Sie die Server app.config Binding-Konfiguration vom Client

WCF Server-Endpunkt:

<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-Client-Endpunkt: die Uri ist:

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? 

Antwort

2

Kurz gesagt kann man nicht. Der Server macht den Dienst verfügbar und der Server diktiert seine Sicherheitseinstellungen. Es erfordert entweder Sicherheit oder nicht, aber diese Konfiguration ist abgeschlossen, wenn der Server das Hosting des Dienstes startet und nicht geändert werden kann, ohne den Dienst "anzuhalten". Die einzige Möglichkeit, sie vom Client zu ändern, ist eine "Verwaltung", die die Konfiguration des Dienstes ändert und neu startet, aber dies hat einen globalen Geltungsbereich.

Wenn Sie sowohl sichere als auch ungesicherte Kommunikation benötigen, müssen Sie zwei verschiedene Endpunkte verfügbar machen. Eine für gesicherte Operationen und eine für ungesicherte Operationen (wenn die Operationen an beiden Endpunkten unterschiedlich sind, sollten Sie auch andere Serviceverträge verwenden).

+0

Der Admin soll in der Lage sein, unverschlüsselte/verschlüsselte NettCP-Kommunikation einzurichten. Die Vorgänge sind gleich. Wenn ich 2 Nettocpbindings auf der Client- und Serverseite erstelle, wie wähle ich die Serverbindung aus? Kommt es auf den Namen der Bindung an, die ich auf dem Client auswähle? Also, wenn binding1 auf dem Client verwendet wird, wird auch die app.config (server) ausgewählt? – Elisabeth

+0

Nein, es hängt von der Adresse des Endpunktes ab. Sie können nicht zwei Bindungen für denselben Enpoint haben. –

+0

Ich habe meine Frage aktualisiert :) – Elisabeth

Verwandte Themen