Надстройка SharePoint, размещенная у поставщика, запущенная в Azure, перестает работать после обновления .NET

Эта статья основана на вкладе Уэстли Холла, инженера группы поддержки разработчиков SharePoint.

Симптомы

Вы обнаружите, что надстройка перестает работать при следующих условиях:

  • У вас есть надстройка SharePoint, размещенная у поставщика, которая работает в веб-службах Azure.
  • Надстройка размещается на странице SharePoint, которая находится в части приложения (клиентской веб-части или надстройки) или в iframe.

Причина

Проблема, скорее всего, вызвана изменением свойства файла cookie SameSite по умолчанию.

В недавнем выпуске обновления платформа .NET Framework значение свойства SameSite по умолчанию в файле cookie ASP.NET_SessionId сбрасывается в Lax. Это изменение предотвращает отправку файла cookie в iframe, если домен iframe отличается от домена хост-страницы. В надстройке веб-части, размещенной у поставщика SharePoint, iframe всегда будет находиться в другом домене.

Например, файл cookie сеанса выглядит следующим образом:

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

Примечание.

В этом примере <xxxxxxxx> является случайным идентификатором сеанса.

Этот сеанс обычно используется в приложении ASP.NET для поддержания проверки подлинности. Страница пытается перенаправить обратно для проверки подлинности во второй попытке, а не использовать сеанс, если есть запись или любой вызов AJAX к тому же приложению.

Иногда служба каталогов создает ошибку "405 Метод не разрешен". Это связано с тем, что вызовы AJAX могут активировать запрос CORS OPTIONS , и SharePoint отклонит такой запрос.

Разрешение

Чтобы устранить эту проблему, задайте значения по умолчанию в файле web.config , как показано ниже в разделе system.web:

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

Примечание.

Если параметр SameSite имеет значение Нет, SharePoint не принудительно требует, чтобы iframe и узел были в одном домене.

Чтобы обновить файлWeb.config в динамическом экземпляре веб-приложения Azure, выполните следующие действия.

  1. Перейдите к параметрам веб-приложения в портал Azure.

  2. Выберите Дополнительные инструменты, а затем нажмите кнопку Go.

    Снимок экрана: параметр

  3. На экране Kudu выберите Консоль отладки, а затем — CMD.

    Снимок экрана: выбор CMD в консоли отладки.

    Снимок экрана: CMD консоли отладки.

  4. На экране Представление файла введите команду CD site\wwwroot (показано в нижнем красном поле на следующем снимке экрана), чтобы получить корневой каталог веб-приложения. Затем нажмите клавишу ВВОД.

    Примечание.

    Список файлов в верхней части страницы обновляется, чтобы отобразить файлWeb.config (возможно, потребуется прокрутить его). Чтобы изменить файл, щелкните значок редактирования (карандаш, как показано в красном поле на рисунке ниже).

    Снимок экрана: значок редактирования файла web.config.

  5. Добавьте параметры файлов cookie httpCookies и sessionState , выделенные на следующем снимке экрана. Если раздел system.web отсутствует, добавьте его так, чтобы он напоминал пример, показанный на следующем снимке экрана.

Снимок экрана: раздел system.web файла web.config.

  1. Нажмите кнопку Сохранить.
  2. Убедитесь, что веб-части надстройки работают должным образом.

Для будущих развертываний рекомендуется добавить это изменение во все проекты исходного кода, из которые было развернуто веб-приложение.

Дополнительная информация

Дополнительные сведения об обновлении платформа .NET Framework см. в разделе Служба приложений Azure — обработка файлов cookie SameSite и исправление платформа .NET Framework 4.7.2.

Требуется дополнительная помощь? Посетите сайт сообщества SharePoint.