Domanda

Sono in esecuzione di un semplice servizio sul mio server con WCF;il servizio è ospitato in WebDev.WebServer.exe (locale).

Quando chiamo il Servizio locale ottengo la seguente eccezione:

Eccezione Non Gestita:Sistema.ServiceModel.Di sicurezza.SecurityNegotiationException:Canale sicuro non può essere aperto perché la sicurezza di negoziazione con l'endpoint remoto non riuscita.Questo può essere a causa di assenza o specificato in modo non corretto EndpointIdentity in EndpointAddress utilizzato per creare il canale.Si prega di verificare la EndpointIdentity specificata o implicita EndpointAddress identifica correttamente l'endpoint remoto.---> Sistema.ServiceModel.FaultException:Il messaggio con l'Azione 'http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue'non può essere trattati al ricevitore, a causa di una mancata corrispondenza ContractFilter in EndpointDispatcher.Ciò potrebbe essere causa di una mancata corrispondenza del contratto (non corrispondenti Azioni tra mittente e destinatario) o un'associazione di protezione/di mancata corrispondenza tra il mittente e il ricevitore.Controllare che mittente e destinatario abbiano lo stesso contratto e la stessa associazione (inclusi i requisiti di sicurezza, ad es.Messaggio Di Trasporto, Nessuno).

Qui sono i miei due app.i file di configurazione dal client e il server.Ho fatto l'app.config dal client con il svcutil-Strumento così dovrebbe essere giusto:

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>
È stato utile?

Soluzione

Il problema era in assistente, ho messo la modalità = "Messaggio" e funziona bene. grazie.

<security mode="None">  

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

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

</security> 

Altri suggerimenti

WCF è molto potente, ma può essere una config incubo.Qui ci sono alcuni potenziali lead:

  • Accendere il WCF registri di traccia, eseguire nuovamente il vostro scenario e poi controllare i log con SvcTraceViewer.exe
  • Capire fino a che punto la messaggistica diventa...
    • cioèil cliente modulo di richiesta e inviarlo al server che la rifiuta (es.in basso a WCF livelli di prima il tuo codice di servizio è il colpo);
    • o la richiesta di ottenere fermato nella sua tracce prima che..il client non anche l'invio della richiesta
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue è un WS-Trust token relativo messaggio, quindi ci sarà qualcosa che non va con l'autenticazione
    • l'errore è che implica che c'è una config di mancata corrispondenza, ma utilizzando SvcUtil dovrebbe averli allineati come hai detto
  • Il client associazione ha il server "http://localhost:1634/UsuarioContexto.svc"
    • Non vedo che la porta specificata nella configurazione del servizio...il servizio è in ascolto su quella porta?
    • se si apre un browser e l'obiettivo è quello di URL, si ottiene un servizio predefinito pagina?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top