Compartilhar via


Exceções de solução de problemas: System.ServiceModel.Security.MessageSecurityException

Uma exceção MessageSecurityException será gerada quando Windows Communication Foundation (WCF) determinar que uma mensagem não está protegida corretamente ou foi violada. O erro ocorre com mais frequência quando todas as seguintes condições forem verdadeiras:

  • Você usa uma referência de serviço WCF sobre uma conexão remota, por exemplo, Conexão de Área de Trabalho Remota ou Serviços de Terminal para se comunicar com um serviço WCF (.svc) em um projeto do site ou aplicativo Web.

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

  • As solicitações para o host local no site remoto estão sendo tratadas pelo ASP.NET Development Server.

Dicas relacionadas

  • Resolver os problemas de autenticação NTLM ao usar o servidor de desenvolvimento do ASP.Net.
    O ASP.NET Development Server normalmente tem a segurança do Desafio/Resposta do Windows NT (NTLM) desativada, o que permite o acesso anônimo. Por padrão, quando você executa uma sessão dos Serviços de Terminal ou usa uma conexão remota, a segurança NTLM é habilitada. Quando a autenticação NTLM é habilitada, todas as solicitações do host local são validadas em relação às credenciais do usuário ou processo que iniciou o ASP.NET Development Server. Isso reduz ameaças de segurança. No entanto, o WCF também realiza sua própria autenticação e não permite que uma conta de administrador consuma serviços WCF.

    Se um usuário remoto puder executar o site usando o ASP.NET Development Server e também trabalhar com um serviço Web ou um serviço WCF, você poderá criar uma associação de serviço personalizada ou desativar a segurança NTLM.

    Observação de segurançaObservação de segurança

     Desativar a segurança NTLM não é recomendado e poderia constituir uma ameaça à segurança.

    Se você criar uma associação de serviço personalizada, ainda estará protegido pela autenticação NTLM.

    Use as etapas a seguir para criar uma associação de serviço personalizada para o serviço WCF.

    Para criar uma associação de serviço personalizada para o serviço WCF hospedado dentro do ASP.NET Development Server

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

    2. Insira 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 WCF ou serviço Web, altere o valor do ponto de extremidade para o seguinte:

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

      Isso garante que o serviço use a associação personalizada.

    5. Adicione uma referência ao serviço no aplicativo Web que acessa o serviço. (Na caixa de diálogo Adicionar Referência de Serviço, adicione uma referência ao serviço como você fez com o serviço original que estava gerando a exceção.)

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

    Observação de segurançaObservação de segurança

     Desativar a segurança NTLM não é recomendado e poderia constituir uma ameaça à segurança.

    Para desativar a segurança NTLM

    1. No Gerenciador de Soluções, clique com o botão direito no nome do site e clique em Páginas de Propriedades.

    2. Selecione Opções de Inicialização e desmarque a caixa de seleção Autenticação NTLM.

    3. Clique em OK.

Consulte também

Tarefas

Como usar o Assistente de Exceção

Referência

MessageSecurityException