Compartilhar via


Solucionando problemas de exceções: sistema.ServiceModel.segurança.MessageSecurityException

A MessageSecurityException exceção é lançada quando Windows Communication Foundation (WCF) determina que uma mensagem não é protegida corretamente ou foi adulterada. O erro ocorre com mais freqüência quando as seguintes condições forem verdadeiras:

  • Você usa uma referência de serviço do WCF em um remoto conexão sistema autônomo conexão remoto desktop ou sistema autônomo serviços de terminal para se comunicar com um serviço WCF (SVC) em um projeto de aplicativo Web da Web ou Web site.

  • Você não tem permissões de administrador no site remoto.

  • As solicitações de localhost no site remoto estão sendo manipuladas pelo ASP.NET Servidor de desenvolvimento.

Dicas associadas

  • Resolva problemas de autenticação de NTLM ao usar o ASP.NET Development servidor.
    The ASP.NET Servidor de desenvolvimento normalmente possui segurança de NTLM (desafio/resposta do Windows NT) desligada, que permite o acesso anônimo. Por padrão, quando você executar uma sessão de serviços de terminal ou usar uma conexão remota, segurança NTLM está habilitada.Quando o NTLM está habilitado, todas as solicitações localhost são validadas em relação as credenciais do usuário ou processo que iniciou o ASP.NET Servidor de desenvolvimento. Isso reduz as ameaças à segurança.No entanto, o WCF também executa sua própria autenticação e não permite que uma conta que não seja de administrador consumir serviços WCF.

    Se um usuário remoto pode executar o site usando o ASP.NET Servidor de desenvolvimento e também trabalhar com um serviço Web ou um serviço WCF, você pode criar uma ligação de serviço personalizado ou desativar a segurança NTLM.

    Observação de segurança:

     Desativando a segurança NTLM não é recomendado e pode constituir uma ameaça à segurança.

    Se você criar uma ligação de serviço personalizado, você ainda está protegido por autenticação NTLM.

    Use as seguintes etapas para criar uma ligação de serviço personalizado para o serviço do WCF.

    Para criar um serviço personalizado de ligação para o serviço WCF hospedado no servidor de desenvolvimento do ASP.NET

    1. Abra a Web. arquivo de configuração para o serviço WCF que está gerando a exceção.

    2. Digite as informações a seguir no arquivo Web.config.

      <bindings>
        <customBinding>
          <binding name="Service1Binding">
            <transactionFlow />
            <textMessageEncoding />
            <httpTransport authenticationScheme="Ntlm" />
          </binding>
        </customBinding>
      </bindings>
      
    3. Salve e feche o arquivo Web.config.

    4. No código para serviço Web ou WCF, altere o valor de ponto de extremidade para o seguinte:

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

      Isso garante que o serviço usa a ligação personalizada.

    5. Adicione uma referência ao serviço no aplicativo Web Web que acessa o serviço.(No Adicionar referência de serviço diálogo caixa, adicionar uma referência para o serviço sistema autônomo fez com o serviço original estava gerando a exceção.)

    Você pode seguir estas etapas para desabilitar a segurança NTLM quando você estiver trabalhando com uma referência de serviço do WCF.

    Observação de segurança:

     Desativando a segurança NTLM não é recomendado e pode constituir uma ameaça à segurança.

    Para desativar a segurança NTLM

    1. In O gerenciador de soluções, clicar com o botão direito do mouse no nome do site da Web e, em seguida, clique em Páginas de propriedades.

    2. selecionar Iniciar Opçõese, em seguida, desmarcar o A autenticação NTLM a caixa de seleção.

    3. Clique em OK.

Consulte também

Tarefas

Como: Descubra mais sobre uma exceção com Assistente de Exceção

Referência

MessageSecurityException

Outros recursos

Usando Serviços da Web ASP.NET