Открытие файлов webdav в Chrome через подключаемый модуль авторизации Office для браузеров NPAPI завершается неудачно для определенных файлов

Хорошо, это сложно, потому что в нем так много переменных:

  • вебдав сервер. Я использовал сервер webdav .net: http://www.webdavsystem.com/server
  • браузеры: хром 28.0.1500.95 м, firefox 23, IE 9
  • плагин для авторизации в офисе для браузеров NPAPI. У меня MS Office 2010 SP2 14.0.7015.1000 (32-разрядная версия). Версии библиотеки подключаемых модулей: C:\Program Files (x86)\Microsoft Office\Office14\NPAUTHZ.DLL - 14.0.4730.1010, C:\Program Files (x86)\Microsoft Office\Office14\NPSPWRAP.DLL: 14.0.4761.1000

Используя программное обеспечение от IT Hit, я создал простой проект на C# с сервером webdav, который показывает файлы из файловой системы. Вы можете скачать проект здесь: https://dl.dropboxusercontent.com/u/35370420/TestPlugin.zip. Файлы, доступные через интерфейс webdav, хранятся в App_Data\WebDav\Storage.

Когда я пытаюсь редактировать документы с помощью браузера ajax JavaScript ( http://www.webdavsystem.com/ajaxfilebrowser), меню редактирования документа не работает для определенных файлов. Вам нужно открыть проект TestPlugin в VS2010, запустить его и нажать кнопку "Обзор" с помощью Ajax File Browser. Я знаю, что их клиент JavaScript использует плагин MS Office в Chrome и FireFox.

Вот мои заметки:

  • Первоначально у меня была проблема в моем реальном приложении, и я думал, что плагин имел ограничение в 111 символов, то есть, когда я пытался открыть файлы, URL которых имели более 111 символов, плагин потерпел неудачу. Во время тестирования с использованием реального приложения, я также видел некоторые странные вещи, где я пытался открыть файл, не работал, открыть второй файл, который, как я знал, работал, но в диалоговом окне предупреждения показывалось имя, составленное имени второго файла, к которому был добавлен суффикс из предыдущего имени файла.
  • Я решил начать с нуля и создал проект C# на основе программного обеспечения webdav .net. Я добавил файлы разной длины в хранилище webdav, и вот что я заметил, когда использовал браузер Browse Ajax File (щелкнул правой кнопкой мыши по каждому файлу и выбрал "Редактировать документ"):

  • FF 23 работает нормально, IE 9 работает нормально, проблем нет

  • Chrome (когда я сказал, что он не открывается, я имел в виду, что браузер показывает сообщение: текущий файл не может быть открыт для редактирования)
    • 01234567890123456789012345678901234567890123456789012345678901234567890123456789012.docx не удается открыть
    • 012345678901234567890123456789012345678901234567890123456789012345678901234567890123.docx открывается нормально
    • 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234.docx не удается открыть
    • 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345.docx не удается открыть
    • 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456.docx не удается открыть
    • 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567.docx не открывается
    • 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678.docx открывается нормально
    • test.xlsx не открывается, хотя у меня появляется диалоговое окно с предупреждением, но затем библиотека сообщает, что не может редактировать файл

Длина первого URL составляет 110 символов:

http://localhost:9658/01234567890123456789012345678901234567890123456789012345678901234567890123456789012.docx

Итак, мой вопрос таков: почему поведение в Chrome такое противоречивое? В конце концов, я не слишком уверен, что за шаблоны. Есть ли проблема с плагином MS? Я бы так подумал, но я не уверен на 100%.

Проект содержит другие файлы, отображаемые в интерфейсе webdav. Вы можете попробовать проверить, работают ли они.

Обновить:

Интересно, что FF 22 вел себя так же, как Chrome, затем я обновился до версии 23 и теперь работает нормально, он открывает все файлы.

1 ответ

Хорошо, благодаря объяснениям Стюарта в этом выпуске, вещи стали более понятными. По сути, я думаю, что проблема заключается в том, как плагин Microsoft был реализован, когда дело доходит до обработки строк, которые передаются из JavaScript. Стюарт опубликовал вопрос, который показывает проблему. Код плагина ожидает, что строки будут заканчиваться нулем, хотя на самом деле это не гарантировано.

Я сделал тест в своем реальном приложении, и я добавил нулевой символ в URL, то есть я прошел url + '\0'и теперь эта кровавая штука работает в Chrome.

Остается вопрос, собирается ли Microsoft исправить их плагин?

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