我在使SharePoint 2010 / IIS 7.5遵守字节范围请求时遇到问题。我正在使用Silverlight开发SharePoint 2010 Web部件,并且正在尝试检索存储在SharePoint中的部分文档。
当我在SharePoint中请求文件的字节范围时,服务器会响应整个文件。但是,如果我从位于Apache服务器上的文件请求相同的字节范围,则一切都按预期工作。下面是Fiddler观察到的http标题。
任何帮助都会非常感激!感谢。
发送:
GET http://example.com/file.abc HTTP/1.1
Accept: */*
Accept-Language: en-US
Referer: http://example.com/index.html
Accept-Encoding: identity
Range: bytes=1061285-1064594
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Safari/533.4
Host: example.com
Connection: Keep-Alive
SharePoint还会获取登录凭据:
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbAdAAAADw==
从Apache收到:
HTTP/1.1 206 Partial Content
Date: Wed, 25 Aug 2010 22:40:34 GMT
Server: Apache/2.0.54
Last-Modified: Fri, 20 Aug 2010 23:27:18 GMT
ETag: "b68e346-103ea9-a3c20180"
Accept-Ranges: bytes
Content-Length: 3310
Vary: User-Agent
Content-Range: bytes 1061285-1064594/1064617
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: application/x-zip
从SharePoint 2010 / IIS 7.5收到
HTTP/1.1 200 OK
Cache-Control: private,max-age=0
Content-Length: 1064617
Content-Type: application/octet-stream
Expires: Tue, 10 Aug 2010 22:40:56 GMT
Last-Modified: Wed, 25 Aug 2010 19:28:39 GMT
ETag: "{5A1DF927-D8CD-4BC0-9590-8188CF777A3D},1"
Server: Microsoft-IIS/7.5
SPRequestGuid: 99799011-5bdc-489f-99fd-d060a56d3ae4
Set-Cookie: WSS_KeepSessionAuthenticated={7703be10-bb56-4fa1-ba8b-cd05f482859f}; path=/
X-SharePointHealthScore: 5
ResourceTag: rt:5A1DF927-D8CD-4BC0-9590-8188CF777A3D@00000000001
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename=file.abc
X-Download-Options: noopen
Public-Extension: http://schemas.microsoft.com/repl-2
Set-Cookie: WSS_KeepSessionAuthenticated={7703be10-bb56-4fa1-ba8b-cd05f482859f}; path=/
Persistent-Auth: true
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Wed, 25 Aug 2010 22:40:56 GMT
答案 0 :(得分:2)
问题是SharePoint缓存是默认的,需要打开才能启用字节范围请求。请参阅Disk-Based Caching for Binary Large Objects。
答案 1 :(得分:0)
注意http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:
“服务器可以忽略Range标头。”
因此,无论何时使用Range标头,您都必须能够处理200响应。您的服务器似乎不支持范围服务的事实是不幸的,但是符合要求。