我的WEBDAV PROPFIND响应不被Windows资源pipe理器接受

我正在实现一个WebDAV服务器,但与build议的客户端(Windows 7资源pipe理器)遇到问题。 在Windows中,我正在浏览到\ server \ public \ container,我的服务器想要显示为包含两个文件的文件夹,所以我收到以下请求:

PROPFIND /public/container HTTP/1.1 Connection: Keep-Alive User-Agent: Microsoft-WebDAV-MiniRedir/6.1.7601 Depth: 1 translate: f Content-Length: 0 Host: devsys:4511 

我的回应是:

 HTTP/1.1 207 Multi-Status Server: MyServer 2.12 Date: Mon, 08 Sep 14 17:57:50 -0000 Host: server.somewhere.com Content-Type: text/xml; charset="utf-8" Content-Length: 2901 <d:multistatus xmlns:d="DAV:"> <d:response> <d:href>/public/container</d:href> <d:propstat> <d:prop> <d:creationdate>2014-09-05T19:00:00Z</d:creationdate> <d:displayname>container</d:displayname> <d:resourcetype> <d:collection/> </d:resourcetype> <d:supportedlock> <d:lockentry> <d:lockscope> <d:exclusive/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> <d:lockentry> <d:lockscope> <d:shared/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> </d:supportedlock> </d:prop> <d:status>HTTP/1.1 200 OK</d:status> </d:propstat> </d:response> <d:response> <d:href>/public/container/myFile1</d:href> <d:propstat> <d:prop> <d:getcontenttype>text/plain</d:getcontenttype> <d:getcontentlength>375</d:getcontentlength> <d:getetag>"1410198520"</d:getetag> <d:creationdate>2014-09-05T19:00:00Z</d:creationdate> <d:displayname>myFile1</d:displayname> <d:getlastmodified>05 Sep 2014 19:00:00 GMT</d:getlastmodified> <d:resourcetype/> <d:supportedlock> <d:lockentry> <d:lockscope> <d:exclusive/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> <d:lockentry> <d:lockscope> <d:shared/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> </d:supportedlock> </d:prop> <d:status>HTTP/1.1 200 OK</d:status> </d:propstat> </d:response> <d:response> <d:href>/public/container/myFile2</d:href> <d:propstat> <d:prop> <d:getcontenttype>text/plain</d:getcontenttype> <d:getcontentlength>375</d:getcontentlength> <d:getetag>"1410198523"</d:getetag> <d:creationdate>2014-09-05T19:00:00Z</d:creationdate> <d:displayname>myFile2</d:displayname> <d:getlastmodified>05 Sep 2014 19:00:00 GMT</d:getlastmodified> <d:resourcetype/> <d:supportedlock> <d:lockentry> <d:lockscope> <d:exclusive/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> <d:lockentry> <d:lockscope> <d:shared/> </d:lockscope> <d:locktype> <d:write/> </d:locktype> </d:lockentry> </d:supportedlock> </d:prop> <d:status>HTTP/1.1 200 OK</d:status> </d:propstat> </d:response> </d:multistatus> 

Windows请提供错误\ myserver \ public \ container不可访问。 您可能没有使用此networking资源的权限。 联系服务器的pipe理员,以确定您是否具有访问权限。 该参数不正确。

它似乎没有给出一个线索可能是什么参数,也不是为什么它是不正确的。 任何人都可以发现明显的错误? 我错过了Windows需要的一个属性,或者我只是做了一些错误的事情?

服务器是在C中,所以我有字节级别的响应控制。

谢谢 – Rog

建议:测试多个客户端(如Cyber​​duck)。

上面的PROPFIND响应是不正确的; 它在没有命名空间的情况下有“multistatus”,但应该在“DAV:”命名空间中。

在首先删除了大部分属性之后,其中一个属性提供了“不正确的参数”,然后慢慢地将它们添加回来,似乎Windows不喜欢“getlastmodified”日期,我曾这样做过:

格林威治时间2014年9月5日19:00:00

将其更改为:

星期五,2014年9月05日19:00:00 GMT

可爱的作品。

感谢您的帮助 – 它帮助清理代码!