Надстройка с хостингом 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

Примечание

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

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

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

Разрешение

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

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

Примечание

Если в SameSite установлено имя None, SharePoint не требует, чтобы iframe и хост были в том же домене.

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

  1. Перейдите к настройкам веб-приложения на портале Azure.
  2. Выберите расширенные средства, а затем выберите Перейти.
    Расширенный экран инструментов на портале Azure.
  3. На экране Kudu выберите консоль Debug и выберите CMD.
    Выберите CMD в консоли Debug.
    Результаты поиска.
  4. На экране Представления файлов введите команду CD-сайта\wwwroot (показанную в нижнем красном поле на следующем скриншоте), чтобы получить корневой каталог веб-приложения. Затем нажмите клавишу ВВОД. > [!NOTE] > Список файлов в верхней части страницы обновляется, чтобы показатьWeb.configфайл (возможно, вам придется прокрутить его). Чтобы изменить файл, выберите значок редактирования (карандаш, как показано в красном поле на рисунке ниже). Чтобы изменить файл, выберите значок карандаша.
  5. Добавьте параметры cookie httpCookies и sessionState, которые будут выделены на следующем скриншоте. Если раздел system.web отсутствует, добавьте его таким образом, чтобы он напоминал пример, показанный на следующем скриншоте. Как должен выглядеть раздел system.web.
  6. Нажмите Сохранить.
  7. Убедитесь, что веб-части надстройки работают как ожидалось.

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

Дополнительные сведения

Дополнительные сведения об обновлении платформа .NET Framework см. в приложении Azure Service-SameSite cookie handling and платформа .NET Framework 4.7.2.

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