2013-02-26 1 views
3

Мы разрабатываем веб-приложение, которое будет предоставлять некоторые функции WebDAV, и для их реализации мы оцениваем компонент движка сервера IT-Hit для .NET.Режим проверки сервера IT-Hit WebDAV и взаимодействие с MS Office

Целью является предоставление пользователю определенного документа MS Office в режиме чтения-записи или только для чтения на основе некоторой внутренней логики; мы попытались исследовать с помощью приложения шаблона WebDAV в Visual Studio и через онлайн-документацию, но мы не нашли конкретного метода для этого. Где можно найти более конкретные ссылки?

Кроме того, можно ли узнать, когда пользователь закрыл приложение MS Office (т. Е. MS Word) и завершил его/ее взаимодействие с документом?

ответ

0

Чтобы сделать файл доступным только для чтения, вы можете реализовать интерфейс IMsItem для файлов. Ваша реализация метода IMsItem.GetFileAttributes должен возвращать только для чтения атрибутов для файла:

public FileAttributes GetFileAttributes() 
{ 
    ... 
    if(/*this file is read-only*/) 
    { 
     return fileSystemInfo.Attributes | FileAttributes.ReadOnly; 
    } 
    ... 
} 

Обратите внимание, что этот код фактически не защищает файл от изменений, он только отмечает файл как только для чтения. Если приложение игнорирует флаг только для чтения, он может перезаписать файл. Чтобы убедиться, что этого не происходит, в реализации метода IFile.Write вы должны проверить, имеет ли пользователь права на изменение файла, а файл не доступен только для чтения. Если файл доступен только для чтения - выбросьте исключение.

Microsoft Office блокирует файл при открытии и разблокировке при закрытии. Поэтому, когда файл закрыт, на стороне сервера вызывается метод ILock.Unlock(). Обратите внимание: если соединение будет потеряно и файл не будет разблокирован MS Office, ваша версия сервера, как правило, автоматически откроет файл после истечения срока блокировки.

Также можете прочитать о how WebDAV locking works here.

+0

Спасибо за входные данные. У меня будет еще один вопрос о режиме только для чтения: вы сказали: «Обратите внимание, что этот код фактически не защищает файл от модификации, он только отмечает файл как доступный только для чтения. Если приложение игнорирует флаг только для чтения, он может быть способен для перезаписи файла. " Означает ли это, что нет шансов открыть файл в клиентском MS Word с тегом «Только для чтения»? Через IMsItem теперь я могу видеть атрибут «Только для чтения» в проводнике Windows, но Word открывает файл без предупреждения. –

+0

@MicheleNegri: Вы решили это? У меня такая же проблема с Excel, Excel, похоже, не обращает внимания на флаг readonly. В соответствии с предложением в ответе я проверил свои условия в методе IContent.Write, реализованном DavFile. Я также рассматриваю идею искусственного блокирования файла ... – costa

+0

FileAttribute полностью игнорируется. Слово все равно открывается в режиме редактирования. Есть ли другой способ сделать это? – greenhoorn

 Смежные вопросы

  • Нет связанных вопросов^_^