У меня есть пользовательский сервер WebDAV, построенный с использованием Sphoirum сервера webdav, который находится внутри приложения ASP.NET MVC3. Это проект .Net 4.0.
Хранилище документов - это SharePoint, где наше MVC-приложение является для него внешним интерфейсом и предоставляет все это через WebDAV. Просто отметим, что в нашем IIS 7.5 не включена публикация WebDAV.
Я реализовал следующие HTTP-глаголы:
- Получить
- Head
- Блокировка
- Опция
- PROPFIND
- Помещенный
- Разблокировка
Теперь, когда я открываю документ Word, он сначала находится в режиме только для чтения. Получение блокировки и переход в режим редактирования успешны, но когда я хочу сохранить изменения в своем документе, я получаю следующее:
Ваши изменения были сохранены, но не могли быть загружены из-за ошибки.
Хитрость в том, что документ действительно правильно сохранен в хранилище, и ответ нашего WebDAV-сервера на слово HTTP / 200, но Word, тем не менее, жалуется.
Я также пытался редактировать в Word непосредственно из репозитория SharePoint, просто чтобы убедиться, что мой Office как-то не сломан - все работает.
Вот ответ на запрос PUT при сохранении документа из Word:
HTTP/1.1 200 OK
Date: Tue, 06 Sep 2011 12:25:47 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 12.0.0.6545
Last-Modified: Tue, 06 Sep 2011 12:25:47 GMT
ETag: "{F4A63494-D302-4C9B-9C57-D0CB0937A2B0},9"
ResourceTag: rt:F4A63494-D302-4C9B-9C57-D0CB0937A2B0@00000000009
X-MSDAVEXTLockTimeout: Second-3600
Lock-Token: opaquelocktoken:{F4A63494-D302-4C9B-9C57-D0CB0937A2B0}20110906T122532Z
Expires: Mon, 22 Aug 2011 12:25:47 GMT
Cache-Control: private,max-age=0
Content-Length: 0
Public-Extension: http://schemas.microsoft.com/repl-2
Set-Cookie: WSS_KeepSessionAuthenticated=40689; path=/
А вот тот же ответ, для того же документа, с нашего сервера WebDAV:
HTTP/1.1 200 OK
Cache-Control: private,max-age=0
Content-Length: 0
Expires: Wed, 24 Aug 2011 08:03:28 GMT
Last-Modified: Wed, 07 Sep 2011 08:03:28 GMT
ETag: "{4a4331a8-7df6-43e6-bd5f-bb80765e83a2},1"
Server: Microsoft-IIS/7.5
MS-Author-Via: DAV
ResourceTag: rt:4a4331a8-7df6-43e6-bd5f-bb80765e83a2@00000000001
Lock-Token: opaquelocktoken:{4a4331a8-7df6-43e6-bd5f-bb80765e83a2}20110907T080328Z
X-MSDAVEXTLockTimeout: Second-3600
Public-Extension: http://schemas.microsoft.com/repl-2
MicrosoftSharePointTeamServices: 12.0.0.6545
Set-Cookie: WSS_KeepSessionAuthenticated=40689; path=/
X-Powered-By: ASP.NET
Date: Wed, 07 Sep 2011 08:03:27 GMT
Итак, я попытался имитировать некоторые заголовки, которые излучает SharePoint, например MicrosoftSharePointTeamServices , но безрезультатно.