ID do artigo: 939761 - Última revisão: sexta-feira, 27 de julho de 2007 - Revisão: 1.0

Identificação do evento: 0 pode ser registrado quando você configura um serviço Web baseado em Web Services Enhancements 3.0 para usar uma conversação segura: "Erro ao processar uma saída falhas resposta"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Considere o seguinte cenário. Configurar um Microsoft Web Services Enhancements 3.0 (WSE 3.0)-com base em Web service para usar uma conversação segura. Você configurar o pool de aplicativos em (IIS) para usar uma conta de usuário personalizado para executar o serviço da Web. Nesse cenário, os seguintes eventos erro podem ser registrados:
Evento 1

Tipo de evento: erro
Origem do evento: Microsoft WSE 3.0
Categoria do evento: nenhum
IDENTIFICAÇÃO de evento: 0
Data: 5/19/2007
Tempo: 3:30:00 PM
Usuário: N/d
Computador: ServerName
Descrição:
Erro ao processar uma resposta de falha de saída.

Evento 2

Tipo de evento: erro
Origem do evento: Microsoft WSE 3.0
Categoria do evento: nenhum
IDENTIFICAÇÃO de evento: 0
Data: 5/19/2007
Tempo: 3:30:00 PM
Usuário: N/d
Computador: ServerName
Descrição:
System.ApplicationException: WSE841: erro ao processar uma saída falhas resposta.
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: servidor não pôde processar a solicitação.
System.Security.Cryptography.CryptographicException: O sistema não é possível localizar o arquivo especificado.

Observação Esses eventos, a palavra "ocorreu" é um erro de ortografia para a palavra "ocorreu".

Causa

Por padrão, o WSE 3.0 usa o objeto SecurityContextToken com monitoração de estado se você configurar o serviço da Web para usar uma conversação segura, definindo a propriedade EstablishSecurityContext da diretiva para true . O WSE 3.0 usa a DPAPI (Data Protection API) para codificar o estado do objeto SecurityContextToken e decodificar o estado do objeto SecurityContextToken . Ou, o WSE 3.0 usa a DPAPI para o cookie do objeto SecurityContextToken codificar e decodificar o cookie do objeto SecurityContextToken .

Esse problema ocorre porque o WSE 3.0 não é possível chamar a DPAPI se o perfil de usuário da identidade de pool de aplicativo não está carregado.

Como Contornar

Para contornar este problema, use um dos seguintes métodos.

Método 1

Configurar a identidade do pool aplicativo para ser executado como uma conta de usuário para o qual o perfil de usuário já está carregado. Por exemplo, configure a identidade do pool de aplicativos para serem executados como a conta do serviço de rede.

Método 2

Carrega manualmente o perfil de usuário da identidade de pool de aplicativo. Para fazer isso, use um dos seguintes métodos.

Método um

Execute as seguintes etapas:
  1. Use uma conta de usuário para fazer logon computador e, em seguida, não altere a conta de usuário.
  2. Nesta conta de usuário, criar um serviço do Microsoft Windows ou executar um serviço do Windows.
  3. Configure o serviço do Windows para que a conta de usuário pode interagir com a área de trabalho.

Método B

Para carregar o perfil de usuário, chame a função LoadUserProfile .

Método 3

Desative o objeto SecurityContextToken com monitoração de estado do serviço da Web definindo o elemento statefulSecurityContextToken . Por exemplo, você pode usar o arquivo de configuração de aplicativo que contém o código a seguir para desativar os tokens de segurança com monitoração de estado.
<tokenIssuer>
     <statefulSecurityContextToken enabled="false"/>
   </tokenIssuer>

Método 4

Para configurar o serviço da Web para usar uma conversação segura, uso um X 509 certificado ou use outro token de segurança digite em vez de usar a implementação de DPAPI padrão. Para fazer isso, configure o elemento serviceToken no arquivo de configuração do aplicativo de cada servidor Web. Por exemplo, o código a seguir configura o serviço da Web para usar um X 509 certificado em vez de usar a implementação de DPAPI padrão.
<microsoft.web.services3>
    <tokenIssuer>
      <statefulSecurityContextToken enabled="true"/>
      <serviceToken>
        <add>
          <KeyInfo>
            <wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
              <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier">bBwPfItvKp3b6TNDq+14qs58VJQ=</wsse:KeyIdentifier>
            </wsse:SecurityTokenReference>
          </KeyInfo>
        </add>
      </serviceToken>
    </tokenIssuer>
  </microsoft.web.services3>

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Quando você envia uma mensagem SOAP, o objeto SecurityContextToken com monitoração de estado é serializado juntamente com uma chave criptografada que pode ser recuperada somente pelo serviço da Web. Ao contrário, a chave criptografada do objeto SecurityContextToken sem monitoração de estado é armazenada em cache pelo cliente e pelo serviço da Web. Portanto, uma seqüência de caracteres exclusiva que representa o token de segurança SecurityContext em cache deve ser enviada na mensagem SOAP. Quando os caches estão disponíveis, não ocorre. Se você usar o objeto SecurityContextToken sem monitoração de estado e se o domínio do aplicativo que está hospedando o serviço da Web for redefinido, os caches são destruídos. Portanto, ocorrerá um erro em SOAP.

Observação Alguns scanners de vírus podem causar o domínio de aplicativo a ser redefinido.

Etapas para reproduzir o problema

  1. Abra o exemplo de conversação de segurança 3.0 WSE início rápido. Por padrão, este exemplo é no seguinte local:
    drive: \Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\SecureConversation\Policy
  2. Configura um pool de aplicativos para usar uma conta de usuário personalizado para executar o serviço da Web neste exemplo. O perfil de usuário da identidade de pool de aplicativo não está carregado ainda.
  3. Execute o exemplo de conversação de segurança 3.0 WSE início rápido.

Referências

Para obter mais informações sobre como solucionar a DPAPI, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
309408  (http://support.microsoft.com/kb/309408/ ) Como solucionar a DPAPI (Data Protection API)
Para obter mais informações sobre a proteção de dados do Windows, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms995355.aspx (http://msdn2.microsoft.com/en-us/library/ms995355.aspx)
Para obter mais informações sobre a função LoadUserProfile , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/aa374341.aspx (http://msdn2.microsoft.com/en-us/library/aa374341.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Studio 2005 Team Suite
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Team Foundation Server
  • Microsoft Visual Studio 2005 Team Edition for Database Professionals
  • Microsoft Visual Studio 2005 Team Edition for Software Architects
  • Microsoft Visual Studio 2005 Team Edition for Software Developers
  • Microsoft Visual Studio 2005 Team Edition for Software Testers
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
Palavras-chave: 
kbmt kbexpertiseadvanced kbtshoot kbprb KB939761 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 939761  (http://support.microsoft.com/kb/939761/en-us/ )