Frage

Ich bin ein einfacher Dienst auf meinem Server mit WCF läuft; der Dienst in WebDev.WebServer.exe (local) gehostet werden.

Wenn ich rufe den Service vor Ort ich die folgende Ausnahme erhalten:

  

Unbehandelte Ausnahme: System.ServiceModel.Security.SecurityNegotiationException: Sichere Kanal nicht geöffnet werden kann, da die Sicherheitsaushandlung mit dem Remote-Endpunkt fehlgeschlagen. Dies kann darauf zurückzuführen sein, fehlen oder falsch angegeben EndpointIdentity im EndpointAddress verwendet, um den Kanal zu schaffen.   Bitte überprüfen Sie die EndpointIdentity angegebenen oder implizierten die EndpointAddress korrekt den Remote-Endpunkt identifiziert. ---> System.ServiceModel.FaultException: Die Meldung mit Aktion ‚ http : //schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue ‘kann nicht sein,   am Empfänger verarbeitet werden, aufgrund einer Fehlpaarung an der Contract EndpointDispatcher. Dies kann wegen   entweder ein Vertrag Mismatch (mismatched Aktionen zwischen Sender und Empfänger) oder einer Bindung / Sicherheitsnichtübereinstimmung zwischen dem Sender und dem Empfänger. Überprüfen Sie, dass Sender und Empfänger den gleichen Vertrag und die gleichen Bindung (einschließlich Sicherheitsanforderungen, zum Beispiel Nachricht, Verkehr, None).

Hier sind meine zwei app.config-Dateien aus dem Client und dem Server. Ich habe die app.config vom Client mit dem svcutil-Werkzeug so sollte es sein Recht:

Client

<client>
    <endpoint address="http://localhost:1634/UsuarioContexto.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUsuarioContexto"

        contract="CarWin.ServiceContracts.Interfaces.IUsuarioContexto" name="LOCAL_WSHttpBinding_IUsuarioContexto">

        <identity><dns value="localhost" /></identity>

    </endpoint>

</client>

<binding name="WSHttpBinding_IUsuarioContexto" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">

    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />

    <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />

    <security mode="Message">

        <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />

        <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />

    </security>

</binding>

Server

<services>
    <service behaviorConfiguration="UsuarioContextoBehavior" name="UserContext.Host.UsuarioContexto">

        <endpoint address="" binding="wsHttpBinding" bindingNamespace="http://CarWin" bindingConfiguration="wsHttpBinding_IUsuarioContexto"

                  contract="CarWin.ServiceContracts.Interfaces.IUsuarioContexto">

            <identity>

                <dns value="localhost" />

            </identity>

        </endpoint>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

    </service>

</services>


<bindings>

    <wsHttpBinding>

        <binding name="wsHttpBinding_IUsuarioContexto" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">

            <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" maxBytesPerRead="2147483647" />

            <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />

            <security mode="None">

                <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />

                <message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" />

            </security>

        </binding>

    </wsHttpBinding>

</bindings>

<behaviors>

    <serviceBehaviors>

        <behavior name="UsuarioContextoBehavior">

            <serviceMetadata httpGetEnabled="true" />

            <serviceDebug includeExceptionDetailInFaults="true" />

        </behavior>

    </serviceBehaviors>

</behaviors>
War es hilfreich?

Lösung

Das Problem war in Server, I-Modus setzen = "Message" und funktioniert gut. Dank.

<security mode="None">  

<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />  

<message clientCredentialType="Windows" negotiateServiceCredential="true" establishSecurityContext="true" />  

</security> 

Andere Tipps

WCF ist sehr leistungsfähig, kann aber ein Config Alptraum. Hier sind einige potenzielle Leads:

  • Schalten Sie die WCF-Trace-Protokolle, erneut ausführen Ihr Szenario und dann prüfen Sie die Protokolle mit SvcTraceViewer.exe
  • Herauszufinden, wie weit der Messaging bekommt ...
    • d. hat der Client die Anforderung bilden und sie an den Server senden, der es ablehnt (das heißt in den unteren Schichten WCF, bevor Sie Ihren eigenen Service-Code ist Hit);
    • oder ist der Antrag in seinen Spuren davor angehalten werden .. der Kunde nicht einmal die Anfrage zu senden
  • http://schemas.xmlsoap.org/ws/2005 / 02 / Vertrauen / RST / ist Ausgabe ein WS-Trust-Token zugehörige Nachricht, so würde da etwas los mit Authentifizierung sein
    • das Implizieren der Fehler, dass es eine Config-Mismatch, aber unter Verwendung von SvcUtil sollte sie aufgereiht wie Sie gesagt haben
  • Die Client-Bindung hat den Server auf „ http: // localhost: 1634 / UsuarioContexto.svc "
    • Ich glaube nicht, dass Port sieht in der Dienstkonfiguration angegeben ... ist der Service Hören auf diesem Port?
    • , wenn Sie einen Browser öffnen und richten Sie sie auf die URL, erhalten Sie einen Standard-Service-Seite?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top