Artigo: 939761 - Última revisão: sexta-feira, 27 de Julho de 2007 - Revisão: 1.0

ID do evento: 0 poderão ser registadas quando configura um serviço Web baseado na Web Services Enhancements 3.0 para utilizar uma conversação segura: "Ocorreu um erro ao processar uma saída de falha de 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 | Reduzir tudo

Sintomas

Considere o seguinte cenário. Configurar o Microsoft Web Services Enhancements 3.0 (WSE 3.0)-com o serviço Web para utilizar uma conversação segura. Configura o agrupamento de aplicações em (IIS) para utilizar uma conta de utilizador personalizadas para executar o serviço Web. Neste cenário, poderão ser registados os eventos de erro seguintes:
Evento 1

Tipo de evento: erro
Origem do evento: Microsoft WSE 3.0
Categoria do evento: nenhum
ID do evento: 0
Data: 5/19/2007
Tempo: 3:30:00 PM
Utilizador: N/d
Computador: ServerName
Descrição:
Ocorreu um erro ao processar uma resposta de erro de saída.

Evento 2

Tipo de evento: erro
Origem do evento: Microsoft WSE 3.0
Categoria do evento: nenhum
ID do evento: 0
Data: 5/19/2007
Tempo: 3:30:00 PM
Utilizador: N/d
Computador: ServerName
Descrição:
System.ApplicationException: WSE841: Ocorreu um erro ao processar uma saída de resposta de falha.
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server não conseguiu processar o pedido.
System.Security.Cryptography.CryptographicException: O sistema não consegue localizar o ficheiro especificado.

Nota Estes eventos, a palavra "Ocorreu" é uma palavra escrita incorrectamente para a palavra "Ocorreu."

Causa

Por predefinição, WSE 3.0 utiliza o objecto SecurityContextToken estado se configurar o serviço Web para utilizar uma conversação segura, definindo a propriedade EstablishSecurityContext da política como true . WSE 3.0 utiliza a API de protecção de dados (DPAPI, Data Protection API) para codificar o estado do objecto SecurityContextToken e para descodificar o estado do objecto SecurityContextToken . Ou, WSE 3.0 utiliza o DPAPI para codificar o cookie do objecto SecurityContextToken e para descodificar o cookie do objecto SecurityContextToken .

Este problema ocorre porque o WSE 3.0 não é possível chamar o DPAPI se o perfil de utilizador a identidade do agrupamento de aplicações não é carregado.

Como contornar

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

Método 1

Configure a identidade do agrupamento de aplicações para serem executados como uma conta de utilizador para o qual o perfil de utilizador já está carregado. Por exemplo, configure a identidade do agrupamento de aplicações para serem executados como conta do serviço de rede.

Método 2

Carregar manualmente o perfil de utilizador a identidade do agrupamento de aplicações. Para o fazer, utilize um dos seguintes métodos.

Método um

Siga estes passos:
  1. Utilize uma conta de utilizador para iniciar sessão no computador e, em seguida, não altere a conta de utilizador.
  2. Nesta conta de utilizador, 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 utilizador pode interagir com o ambiente de trabalho.

Método B

Para carregar o perfil de utilizador, chame a função LoadUserProfile .

Método 3

Desactive o objecto SecurityContextToken estado do serviço Web, configurando o elemento statefulSecurityContextToken . Por exemplo, pode utilizar o ficheiro de configuração de aplicação que contém o código seguinte para desactivar os tokens de segurança com estado.
<tokenIssuer>
     <statefulSecurityContextToken enabled="false"/>
   </tokenIssuer>

Método 4

Para configurar o serviço Web para utilizar uma conversação segura, utilize um X 509 certificado ou utilize outro token de segurança escreva em vez de utilizar a implementação de DPAPI predefinido. Para efectuar este procedimento, configure o elemento serviceToken no ficheiro de configuração da aplicação de cada servidor Web. Por exemplo, o seguinte código configura o serviço Web para utilizar um X 509 certificado em vez de utilizar a implementação de DPAPI predefinido.
<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>

Ponto Da Situação

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

Mais Informação

Quando envia uma mensagem SOAP, o objecto SecurityContextToken estado for serializado juntamente com uma chave encriptada que pode ser obtida apenas pelo serviço da Web. Em contrary, a chave encriptada do objecto SecurityContextToken sem estado está em cache pelo cliente e pelo serviço da Web. Assim, uma cadeia exclusiva que representa o token de segurança em cache SecurityContext deverá ser enviada numa mensagem SOAP. Quando as caches estão disponíveis, não acontece. Se utilizar o objecto SecurityContextToken sem estado e se o domínio de aplicação que está a hospedar o serviço da Web é reposto, as caches serão destruídas. Por este motivo, ocorre um erro SOAP.

Nota Alguns programas de detecção de vírus podem causar o domínio de aplicação a ser reposto.

Passos para reproduzir o problema

  1. Abra o exemplo rápidos de conversação segura do WSE 3.0. Por predefinição, este exemplo é na seguinte localização:
    drive: \Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\SecureConversation\Policy
  2. Configura um agrupamento de aplicações para utilizar uma conta de utilizador personalizadas para executar o serviço Web neste exemplo. Não é carregado o perfil de utilizador a identidade do agrupamento de aplicações ainda.
  3. Execute o exemplo rápidos de conversação segura do WSE 3.0.

Referências

Para obter mais informações sobre como resolver o DPAPI, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
309408  (http://support.microsoft.com/kb/309408/ ) Como resolver a API de protecção de dados (DPAPI, Data Protection API)
Para obter mais informações sobre protecção de dados do Windows, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms995355.aspx (http://msdn2.microsoft.com/en-us/library/ms995355.aspx)
Para mais informações sobre a função LoadUserProfile , visite o seguinte site da Web 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
  • 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )