Um suplemento hospedado pelo provedor do SharePoint em execução no Azure para de funcionar após uma atualização do .NET

Este artigo é baseado em uma contribuição do Westley Hall, um engenheiro da equipe de suporte ao desenvolvedor do SharePoint.

Sintomas

Você descobre que um suplemento para de funcionar nas seguintes condições:

  • Você tem um suplemento hospedado pelo provedor do SharePoint que está em execução nos serviços Web do Azure.
  • O suplemento é hospedado em uma página do SharePoint que está dentro de uma parte do aplicativo (ou uma web part do cliente ou suplemento) ou um iframe.

Motivo

O problema provavelmente é causado por uma alteração na propriedade de cookie SameSite padrão.

Uma distribuição de atualização .NET Framework recente redefine o valor padrão da propriedade SameSite no cookie ASP.NET_SessionId para Lax. Essa alteração impede que o cookie seja enviado para um iframe se o domínio do iframe for diferente do domínio da página host. Em um suplemento de Web Part hospedado pelo provedor do SharePoint, o iframe sempre estará em um domínio diferente.

Por exemplo, o cookie de sessão se assemelha ao seguinte:

Set-Cookie: ASP.NET_SessionId=<xxxxxxxx>; path=/; HttpOnly; SameSite=Lax

Observação

Neste exemplo, <xxxxxxx é> um identificador aleatório da sessão.

Normalmente, essa sessão é usada no aplicativo ASP.NET para manter a autenticação. A página tenta redirecionar de volta para autenticar na segunda tentativa em vez de usar a sessão se houver uma postagem ou qualquer chamada do AJAX para o mesmo aplicativo.

Às vezes, o Serviço de Diretório gera um erro "405 Método Não Permitido". Isso ocorre porque as chamadas do AJAX podem disparar uma solicitação CORS OPTIONS e o SharePoint rejeitará essa solicitação.

Resolução

Para resolve esse problema, defina os padrões no arquivo web.config da seguinte maneira na seção system.web:

<system.web>
    <httpCookies sameSite="None" requireSSL="true"/>
    <sessionState cookieSameSite="None" />

Observação

Se SameSite estiver definido como Nenhum, o SharePoint não força o requisito para que o iframe e o host estejam no mesmo domínio.

Para atualizar o arquivo Web.config na instância ao vivo do aplicativo Web do Azure, siga estas etapas:

  1. Navegue até as configurações do aplicativo Web no portal do Azure.

  2. Selecione Ferramentas Avançadas e selecione Ir.

    A captura de tela mostra a opção Ferramentas Avançadas.

  3. Na tela Kudu, selecione Depurar console e, em seguida, CMD.

    A captura de tela mostra como selecionar CMD no console de Depuração.

    A captura de tela mostra o CMD do console de Depuração.

  4. Na tela Exibição de Arquivo , insira o comando site\wwwroot de CD (mostrado na caixa vermelha inferior na próxima captura de tela) para obter o diretório raiz do aplicativo Web. Em seguida, pressione Enter.

    Observação

    A lista de arquivos na parte superior da página é atualizada para mostrar o arquivoWeb.config (talvez você precise rolar para vê-lo). Para editar o arquivo, selecione o ícone de edição (o lápis, conforme mostrado na caixa vermelha na imagem abaixo).

    A captura de tela mostra o ícone de edição do arquivo web.config.

  5. Adicione as configurações de cookie httpCookies e sessionState que são realçadas na próxima captura de tela. Se a seção system.web estiver ausente, adicione-a para que ela se assemelhe ao exemplo mostrado na próxima captura de tela.

A captura de tela mostra a seção system.web do arquivo web.config.

  1. Selecione Salvar.
  2. Verifique se suas web parts de suplemento estão funcionando conforme o esperado.

Para implantações futuras, recomendamos adicionar essa alteração a quaisquer projetos de código-fonte dos quais o aplicativo Web foi implantado.

Mais informações

Para obter mais informações sobre o .NET Framework atualização, consulte Serviço de Aplicativo do Azure— Tratamento de cookie SameSite e .NET Framework patch 4.7.2.

Ainda precisa de ajuda? Acesse a Comunidade do SharePoint.