Compartilhar via


Solucionando problemas de exceções: System.ServiceModel.Security.MessageSecurityException

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

  • Você pode usar uma referência de serviço do WCF em uma conexão remota, como, por exemplo, a conexão de área de trabalho remota ou serviços de Terminal para se comunicar com um serviço WCF (. svc) em um projeto de aplicativo Web ou site da Web.

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

  • Solicitações de localhost no site remoto estão sendo manipuladas pelo ASP.NET servidor de desenvolvimento.

Associated Tips

  • Resolva problemas de autenticação NTLM quando usando o ASP.NET Development Server.
    O ASP.NET Development Server geralmente tem segurança de desafio/resposta de Windows NT (NTLM) desativada, que permite acesso anônimo. Por padrão, quando você executa uma sessão de serviços de Terminal ou usa uma conexão remota, segurança NTLM está habilitada. Quando NTLM é ativada, todas as solicitações de localhost são validadas contra as credenciais do usuário ou processo que iniciou a 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 de administrador consumir serviços WCF.

    Se um usuário remoto pode executar o site usando o ASP.NET o servidor de desenvolvimento e também o trabalho com um serviço da 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çaObservação sobre 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 uma ligação de serviço personalizado para o serviço WCF hospedado dentro do aplicativo ASP.NET Development Server

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

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

      <bindings>
        <customBinding>
          <binding name="Service1Binding">
            <transactionFlow />
            <textMessageEncoding />
            <httpTransport authenticationScheme="Ntlm" />
          </binding>
        </customBinding>
      </bindings>
      
    3. Save and close the Web.config file.

    4. No código para o serviço da 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 da Web que acessa o serviço. (Na Add Service Reference caixa de diálogo caixa, adicione uma referência ao serviço, como fez com que o serviço original que estava gerando a exceção.)

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

    Observação de segurançaObservação sobre 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. Em Solution Explorer, clique com o botão direito no nome do site da Web e, em seguida, clique em Property Pages.

    2. Selecione Start Optionse desmarque o A autenticação NTLM caixa de seleção.

    3. Click OK.

Consulte também

Tarefas

Como: Use o Assistente de exceção

Referência

MessageSecurityException

Outros recursos

Serviços Web do ASP.NET