WebDAV - Microsoft Excel 2016 не может сохранить изменения назад

У меня есть настроенный сервер ITHit WebDAV на веб-сайте нашей компании, который отлично работает в Office 2007/10/13 с PowerPoint, Word и Excel. Однако я недавно обновился до Office 2016 и обнаружил, что Excel больше не работает, однако Word и PowerPoint работают нормально.

В Excel я получаю сообщение об ошибке ниже:

В Word и PowerPoint я получаю диалог, ниже которого я могу пропустить:

Известна ли проблема с сервером ITHit WebDAV в Excel 2016?

При подключении в Visual Studio 2015 не возникает никаких исключений. Также, когда я проверил Fiddler, я вижу последнее, что пытается сделать сервер WebDAV, - это блокировка документа, который, похоже, работает без каких-либо исключений. Он блокирует и разблокирует документ дважды, затем на замке, где я пытаюсь сохранить его, затем возвращается с сообщением об ошибке в Excel (см. Рис. 1).

Запросы блокировки показаны ниже:

Первый замок ОК:

Разблокировка:

блокирует документ и останавливает:

Единственное, что я вижу, это то, что я не вижу, это поле в разделе Разное заголовка:

Я исчерпал все варианты и понятия не имею, почему это происходит только с Excel в Office 2016.

Любая помощь будет принята с благодарностью.

2 ответа

Эта ошибка была уже давно, и я нашел старый пост, связанный с Microsoft:

http://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_other/upload-failed-server-file-updated-were-sorry/30b69218-2cc1-40e2-8ede-69ac8bd55ba6

Microsoft так и не пришла к решению, но пользователь по имени Беренд Энгельбрехт опубликовал два обходных пути. Было исправление кода, которое не работало для меня, но стоит попробовать. Предполагалось, что Excel неправильно обработал измененную дату, поэтому не возвращайте ее. Вот как я реализовал это для IT Hit WebDAV. Если в моей реализации IHierarchyItemAsync было изменено значение DateTime.MinValue, то в ответ не было добавлено изменение даты.

if (context.Request.UserAgent != null &&
    context.Request.UserAgent.IndexOf("Microsoft Office Excel", StringComparison.InvariantCultureIgnoreCase) >= 0)
{
    Modified = DateTime.MinValue;
}

Второе решение работало, но не было практичным для наших конечных пользователей. Каждому необходимо отключить защищенный просмотр для интернет-файлов: Файл> Параметры> Центр управления безопасностью> Настройки центра управления безопасностью> Защищенный просмотр.

Также обратите внимание, что при локальной отладке я никогда не сталкивался с проблемой, потому что мой локальный WebDAV не вызывал защищенный просмотр в качестве "местоположения в Интернете".

Надеюсь, что это поможет, и если кто-то найдет другое решение, пожалуйста, опубликуйте его здесь

Я знаю, что этот пост старый, но для всех, у кого такая же проблема, есть решение:

Эта ошибка вызвана тем, что Excel запрашивает файл во второй раз, если пользователь выбирает "Разрешить редактирование". Если Сервер отправляет файл снова (с кодом 200) вместо того, чтобы возвращать 304 (Не изменено), Office, кажется, считает, что кто-то изменил документ, даже если это не так.

Одно быстрое решение - использовать ETag заголовок и проверьте If-None-Match в будущих запросах знать, что возвращать, 304 или 200.

Я дважды проверил, что MS Excel 2016 работает без проблем с IT Hit WebDAV Server Engine. Вот что может вызвать эту проблему:

  • Неправильное изменение свойства свойства Date. Убедитесь, что это свойство возвращает правильную дату UTC.

  • Неправильная реализация ETag. Обязательно меняйте это свойство каждый раз, когда документ обновляется.

Я проверил 2 конфигурации сервера: веб-сайт https://ajaxbrowser.com/ (анонимная аутентификация), на котором работает Server Engine v3.9.2075 и пример сервера, работающего на локальном хосте, сгенерированный мастерами WebDAV для Visual Studio v4.5.2958 с (базовая аутентификация включена в реестре),

В качестве тестовой клиентской среды я использовал MS Office 2016 на Win 8.1 и MS Office 2013 на Win 10. В обоих случаях документ Excel открылся без проблем, и я смог сохранить его обратно на сервер. Параметры защищенного просмотра MS Office были установлены по умолчанию на тестовых компьютерах - все проверено.

Другие вопросы по тегам