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

Este artigo se baseia em uma contribuição do Westley Hall, um engenheiro da equipe de suporte para desenvolvedores do SharePoint.

Sintomas

Você descobre que um suplemento pára de funcionar sob as seguintes condições:

  • Você tem um suplemento hospedado pelo provedor do SharePoint que está sendo executado nos serviços Web do Azure.
  • O suplemento está hospedado em uma página do SharePoint que está dentro de uma parte de 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 recente da atualização do .NET Framework redefiniu o valor da propriedade SameSite padrão no cookie ASP. NET_SessionId como 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 estará sempre em um domínio diferente.

Por exemplo, o cookie de sessão é semelhante ao seguinte:

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

Observação

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

Essa sessão é normalmente 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 uma chamada AJAX para o mesmo aplicativo.

Às vezes, o serviço de diretório gerará um erro "método 405 não permitido". Isso ocorre porque as chamadas AJAX podem acionar uma solicitação de Opções CORS , e o SharePoint rejeitará tal solicitação.

Resolução

Para resolver esse problema, defina os padrões no 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çará o requisito para que o iframe e o host estejam no mesmo domínio.

Para atualizar o arquivo de Web.config na instância Live do seu Azure Web App, siga estas etapas:

  1. Navegue até suas configurações de aplicativo Web no portal do Azure.
  2. Selecione ferramentas avançadase, em seguida, selecione ir.
    Tela ferramentas avançadas no portal do Azure.
  3. Na tela kudu, selecione console de depuraçãoe, em seguida, selecione cmd.
    Selecione CMD no console de depuração.
    Resultados da pesquisa.
  4. Na tela Exibir arquivo , digite o comando CD site\wwwroot (mostrado na caixa vermelho inferior na captura de tela a seguir) para obter o diretório raiz do aplicativo Web. Em seguida, pressione Enter. > [!NOTE] > A lista de arquivos na parte superior da página é atualizada para mostrar o arquivo de Web.config (talvez seja necessário rolar para vê-lo). Para editar o arquivo, selecione o ícone Editar (o lápis, conforme mostrado na caixa vermelha na imagem abaixo). Para editar o arquivo, selecione o ícone de lápis.
  5. Adicione as configurações de cookie httpCookies e SessionState realçadas na próxima captura de tela. Se a seção System. Web estiver ausente, adicione-a para que pareça com o exemplo mostrado na captura de tela a seguir. Como deve ser a aparência da seção System. Web.
  6. Selecione Salvar.
  7. Verifique se as Web Parts do suplemento estão funcionando conforme o esperado.

Para implantações futuras, recomendamos que você adicione essa alteração a qualquer projeto de código-fonte no qual o aplicativo Web foi implantado.

Mais informações

Para obter mais informações sobre a atualização do .NET Framework, consulte Azure app Service — SameSite cookies Handling e .NET Framework 4.7.2 patch.

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