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

Sintomas

Quando você sai de um aplicativo Web do SharePoint 2013 configurado por vários provedores de autenticação (por exemplo, provedores de autenticação de Declarações do Windows e FBA Claims), 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)  

Motivo

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

Resolução

Para resolve esse problema, substitua o link Sair pelo link Entrar Como Usuário Diferente para todos os servidores front-end da Web no farm do SharePoint seguindo estas etapas:

  1. Na pasta a seguir, abra o arquivo welcome.ascx em um editor de texto, como 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"   
    />  
    

    Nota Os atributos de texto e descrição são alterados para imitar o botão logoff.

Mais informações

Ainda precisa de ajuda? Acesse a Comunidade do SharePoint.