Windows Explorer下HTTP/2 WebDAV的PROPFIND响应解析异常问题
.NET升级后Windows Explorer解析WebDAV PROPFIND响应失败的解决方案
这是Windows Explorer的WebDAV客户端兼容性问题,并非你遗漏了必填属性。
核心问题出在PROPFIND响应的<D:status>字段格式上:你当前返回的是HTTP/2 200 OK,但Windows Explorer的WebDAV解析逻辑只兼容HTTP/1.1格式的状态行——哪怕实际请求用的是HTTP/2协议,这个字段里也必须写成HTTP/1.1 200 OK才能被正确识别。
修改后的PROPFIND响应示例:
<?xml version="1.0" encoding="UTF-8"?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>https://localhost:5001/documents</D:href> <D:propstat> <D:prop> <creationdate>2022-01-09T01:06:56Z</creationdate> <displayname>Documents</displayname> <getcontentlength>0</getcontentlength> <getcontenttype>application/octet-stream</getcontenttype> <getlastmodified>2023-04-11T14:08:41Z</getlastmodified> <iscollection>1</iscollection> <isFolder>t</isFolder> <ishidden>0</ishidden> <D:resourcetype> <D:collection /> </D:resourcetype> <supportedlock> <lockentry> <lockscope> <D:exclusive /> </lockscope> <locktype> <D:write /> </locktype> </lockentry> </supportedlock> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
本质原因是Windows的WebDAV实现更新滞后,没有适配HTTP/2协议下的状态行格式要求,依然依赖HTTP/1.1的格式标识。只要调整这个字段的内容,就能让Windows Explorer正常解析PROPFIND响应。
内容的提问来源于stack exchange,提问作者Jordan Brobyn
相关产品推荐
相关产品推荐

