Надстройка с хостингом 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, выполните следующие действия:
- Перейдите к настройкам веб-приложения на портале Azure.
- Выберите расширенные средства, а затем выберите Перейти.
- На экране Kudu выберите консоль Debug и выберите CMD.
- На экране Представления файлов введите команду CD-сайта\wwwroot (показанную в нижнем красном поле на следующем скриншоте), чтобы получить корневой каталог веб-приложения. Затем нажмите клавишу ВВОД.
> [!NOTE]
> Список файлов в верхней части страницы обновляется, чтобы показатьWeb.configфайл (возможно, вам придется прокрутить его). Чтобы изменить файл, выберите значок редактирования (карандаш, как показано в красном поле на рисунке ниже).
- Добавьте параметры cookie httpCookies и sessionState, которые будут выделены на следующем скриншоте. Если раздел system.web отсутствует, добавьте его таким образом, чтобы он напоминал пример, показанный на следующем скриншоте.
- Нажмите Сохранить.
- Убедитесь, что веб-части надстройки работают как ожидалось.
В будущих развертываниях рекомендуется добавить это изменение в любые проекты исходных кодов, из них было развернуто веб-приложение.
Дополнительные сведения
Дополнительные сведения об обновлении платформа .NET Framework см. в приложении Azure Service-SameSite cookie handling and платформа .NET Framework 4.7.2.
Требуется дополнительная помощь? Перейдите в сообщество SharePoint.