使用ITHits的Webdav .Net Engine直接编辑MS Office文件

时间:2013-06-03 09:37:27

标签: webdav ithit-webdav-server

我正在试用http://www.webdavsystem.com/ .Net WebDav Server并且在Word文件上直接编辑问题,该文件始终以只读模式打开。 (用Visio测试,Excel同样的问题)

我已经尝试了http://www.webdavsystem.com/server/prev/v2/documentation/ms_office_read_only

页中提到的几件事

以下是结果

  • 是:我在服务器站点根目录上配置了WebDAV。
  • 是:我的WebDAV支持Class 2.(使用内置向导生成项目)
  • 否:我没有打开网页超链接文件,我从M:\ Folder \ File.doc打开为Mapped Drive
  • 是的:我已在注册表中清除了Microsoft Office WebDAV缓存。
  • 是的:我已排除了客户端MS Office问题。通过测试 www.ajaxfilebrowser.com,运作完美。

我不能通过网页上的建议真正做到的两件事是

  1. 我在Web.config文件中启用了Log标志并附在此处 http://www.sendspace.com/file/fp3yrz因为我无法理解 记录语法很多。
  2. 我也不太了解Fiddle(检查WebDAV 使用Fiddler工具的请求)我的服务器配置为使用 通过标准HTTP进行摘要式身份验证,它似乎有效 - 驱动器 映射没有问题。
  3. 我的环境:VS2012 Ultimate运行Win7终极6GB Ram(也充当客户端PC),服务器:Winserver 2012标准,2GBRam

2 个答案:

答案 0 :(得分:1)

我检查了你的日志,它看起来没问题,我没有发现任何问题。

Microsoft Mini-redirector许多缓存身份验证信息。以下是您可以尝试的其他内容:

  1. 使用net use * / DELETE命令(或其变体)卸载WebDAV文件夹。
  2. 使用以下命令清除已保存的登录信息:

    rundll32.exe keymgr.dll,KRShowKeyMgr

答案 1 :(得分:1)

LOCK请求应该成功打开Office文档进行编辑(不是只读)。这将确保一次不会由两个或更多人编辑文档。 但是在你的日志文件中,我可以看到5个LOCK请求,其中4个失败(减少):

[7] [LOCK] /685/test_D47H.doc
User-Agent: Microsoft-WebDAV-MiniRedir/6.1.7601
Timeout: Second-3600

[7] <?xml version="1.0" encoding="utf-8" ?><D:lockinfo xmlns:D="DAV:"><D:lockscope><D:exclusive/></D:lockscope><D:locktype><D:write/></D:locktype><D:owner><D:href>admin</D:href></D:owner></D:lockinfo>

[7] HTTP/1.1 403 Forbidden
X-Env-Version : 4.0.30319.17929 32bit
X-OS-Version : Microsoft Windows NT 6.2.9200.0
X-IIS-Version : Microsoft-IIS/8.0
X-Worker-Request : System.Web.Hosting.IIS7WorkerRequest
X-Engine : IT Hit WebDAV Server .Net v3.1.869.0 (Evaluation License)

[7] <?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:">
 <d:need-privileges>
  <d:responsedescription>Not enough privileges</d:responsedescription>
   <d:resource>
    <d:href>http://webdrive.test.com/685/test_D47H.doc</d:href>
    <d:privilege>
     <d:write />
    </d:privilege>
   </d:resource>
  </d:need-privileges>
</d:error>

“没有足够的权限” - 这意味着在尝试为文件/685/test_D47H.doc创建备用流时会引发UnauthorizedAccessException。并且LOCK请求是唯一尝试更改此文件(所有其他请求只读取其属性)。

但是后来你创建文件/685/test_D47H%20-%20Copy.doc并且所有更改请求都成功(如PUT,PROPPATCH,UNLOCK)。

这意味着文件/685/test_D47H.doc被写保护,任何新创建的文件都没有。