Condividi tramite


Risoluzione dei problemi relativi alle eccezioni: System.ServiceModel.Security.MessageSecurityException

Quando Windows Communication Foundation (WCF) determina che un messaggio non è protetto correttamente oppure è stato alterato, viene generata l'eccezione MessageSecurityException. Questo errore si verifica il più delle volte quando le condizioni indicate di seguito si verificano contemporaneamente:

  • Si utilizza un riferimento al servizio WCF su una connessione remota, ad esempio Connessione desktop remoto o Servizi terminal, per comunicare con un servizio WCF (con estensione svc) in un sito Web o in un progetto di applicazione Web.

  • Non si dispone di autorizzazioni di amministrazione per il sito remoto.

  • Le richieste a localhost sul sito remoto vengono gestite dal server di sviluppo ASP.NET.

Suggerimenti associati

  • Risolvere i problemi di autenticazione NTLM in caso di utilizzo del server di sviluppo ASP.Net.
    Nel server di sviluppo ASP.NET di solito la sicurezza NTLM (Windows NT Challenge/Response) è disattivata e ciò consente l'accesso anonimo. Per impostazione predefinita, quando si esegue una sessione di Servizi terminal o si utilizza una connessione remota, la sicurezza NTLM è attivata. Quando la sicurezza NTLM è attivata, tutte le richieste a localhost vengono convalidate in base alle credenziali dell'utente o al processo che ha avviato il server di sviluppo ASP.NET. In questo modo è possibile ridurre le minacce per la sicurezza. L'autenticazione WCF viene eseguita comunque e l'utilizzo dei servizi WCF viene limitato esclusivamente agli account di amministratore.

    Se un utente remoto può eseguire il sito Web utilizzando il server di sviluppo ASP.NET e utilizzare contemporaneamente un servizio Web o un servizio WCF, è possibile creare un'associazione al servizio personalizzata o disattivare la sicurezza NTLM.

    Nota sulla sicurezzaNota sulla sicurezza

     La disattivazione della sicurezza NTLM non è un'operazione consigliata e può costituire una minaccia per la sicurezza.

    Se si crea un'associazione al servizio personalizzata è possibile mantenere la sicurezza dell'autenticazione NTLM.

    Utilizzare i passaggi indicati di seguito per creare un'associazione al servizio personalizzata per il servizio WCF.

    Per creare un'associazione al servizio personalizzata per il servizio WCF ospitato all'interno del server di sviluppo ASP.NET

    1. Aprire il file Web.config del servizio WCF che genera l'eccezione.

    2. Immettere le informazioni riportate di seguito nel file Web.config.

      <bindings>
        <customBinding>
          <binding name="Service1Binding">
            <transactionFlow />
            <textMessageEncoding />
            <httpTransport authenticationScheme="Ntlm" />
          </binding>
        </customBinding>
      </bindings>
      
    3. Salvare e chiudere il file Web.config.

    4. Nel codice del servizio WCF o del servizio Web, sostituire il valore dell'endpoint con quanto segue:

      <endpoint address="" binding="customBinding" bindingConfiguration="Service1Binding" contract="IService1" />
      

      Ciò garantisce l'utilizzo dell'associazione personalizzata da parte del servizio.

    5. Aggiungere un riferimento al servizio nell'applicazione Web che vi ha accesso. Nella finestra di dialogo Aggiungi riferimento al servizio, aggiungere un riferimento al servizio come già fatto per il servizio originario che generava l'eccezione.

    Utilizzare la procedura indicata di seguito per disabilitare la sicurezza NTLM quando si utilizza un riferimento a un servizio WCF.

    Nota sulla sicurezzaNota sulla sicurezza

     La disattivazione della sicurezza NTLM non è un'operazione consigliata e può costituire una minaccia per la sicurezza.

    Per disattivare la sicurezza NTLM

    1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome del sito Web e scegliere Pagine delle proprietà.

    2. Scegliere Opzioni di avvio, quindi deselezionare la casella di controllo Autenticazione NTLM.

    3. Scegliere OK.

Vedere anche

Attività

Procedura: utilizzare Informazioni sulle eccezioni

Riferimenti

MessageSecurityException

Altre risorse

Utilizzo dei servizi Web ASP.NET