Exceção System. ArgumentException ao sair de um aplicativo Web

Sintomas

Quando você sai de um aplicativo Web do SharePoint 2013 que é configurado por vários provedores de autenticação (por exemplo, declarações do Windows e provedores de autenticação de declarações do FBA), a seguinte mensagem de exceção de pilha de chamadas é exibida em uma página de exceção:

Exception of type 'System.ArgumentException' was thrown. Parameter name: encodedValue at  
Microsoft.SharePoint.Administration.Claims.SPClaimEncodingManager.DecodeClaimFromFormsSuffix(System.String)  
Microsoft.SharePoint.Administration.Claims.SPClaimProviderManager.GetProviderUserKey(Microsoft.IdentityModel.Claims.IClaimsIdentity, System.String)  
Microsoft.SharePoint.Administration.Claims.SPClaimProviderManager.GetProviderUserKey(System.String)  
Microsoft.SharePoint.Utilities.SPUtility.GetFullUserKeyFromLoginName(System.String)  
Microsoft.SharePoint.ApplicationRuntime.SPHeaderManager.AddIsapiHeaders(System.Web.HttpContext, System.String, System.Collections.Specialized.NameValueCollection)  
Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PreRequestExecuteAppHandler(System.Object, System.EventArgs)  

Causa

Esse problema ocorre porque um contexto de usuário inválido é deixado no cache do IIS.

Resolução

Para resolver esse problema, substitua o link de saída pela entrada como um link de usuário diferente para todos os servidores Web front-end no farm do SharePoint seguindo estas etapas:

  1. Na seguinte pasta, abra o arquivo Welcome. ascx em um editor de texto como o bloco de notas:

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES
    
  2. Substitua o texto antigo pelo novo texto da seguinte maneira:
    Texto antigo

    <SharePoint:MenuItemTemplate runat="server" id="ID_Logout"  
    Text="<%$Resources:wss,personalactions_logout%>"  
    Description="<%$Resources:wss,personalactions_logoutdescription%>"  
    MenuGroupId="100"  
    Sequence="400"  
    UseShortId="true"  
    />  
    

    Novo texto

    <SharePoint:MenuItemTemplate runat="server" ID="ID_LoginAsDifferentUser"  
    Text="<%$Resources:wss,personalactions_loginasdifferentuser%>"   
    Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>"   
    MenuGroupId="100"   
    Sequence="400"   
    UseShortId="true"   
    />  
    

    Observação Os atributos Text e Description são alterados para imitar o botão logoff.

Mais informações

Ainda precisa de ajuda? Vá para a comunidade do SharePoint.