Надстройка 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, выполните следующие действия.
Перейдите к параметрам веб-приложения в портал Azure.
Выберите Дополнительные инструменты, а затем нажмите кнопку Go.
На экране Kudu выберите Консоль отладки, а затем — CMD.
На экране Представление файла введите команду CD site\wwwroot (показано в нижнем красном поле на следующем снимке экрана), чтобы получить корневой каталог веб-приложения. Затем нажмите клавишу ВВОД.
Примечание.
Список файлов в верхней части страницы обновляется, чтобы отобразить файлWeb.config (возможно, потребуется прокрутить его). Чтобы изменить файл, щелкните значок редактирования (карандаш, как показано в красном поле на рисунке ниже).
Добавьте параметры файлов cookie httpCookies и sessionState , выделенные на следующем снимке экрана. Если раздел system.web отсутствует, добавьте его так, чтобы он напоминал пример, показанный на следующем снимке экрана.
- Нажмите кнопку Сохранить.
- Убедитесь, что веб-части надстройки работают должным образом.
Для будущих развертываний рекомендуется добавить это изменение во все проекты исходного кода, из которые было развернуто веб-приложение.
Дополнительная информация
Дополнительные сведения об обновлении платформа .NET Framework см. в разделе Служба приложений Azure — обработка файлов cookie SameSite и исправление платформа .NET Framework 4.7.2.
Требуется дополнительная помощь? Посетите сайт сообщества SharePoint.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по