使用CheckAndDownloadUpdateAsync()在OOB更新期间发生灾难性错误

时间:2015-07-14 15:32:51

标签: silverlight

我已经陷入了这个错误的死胡同,可能是某些人经历过类似的事情并且知道如何解决?

问题在于,当调用CheckAndDownloadUpdateAsync()时,发送对服务器的请求,服务器返回304或200个HTTP代码。如果200 Silverlight运行时执行应用程序的更新。但这对我来说不会发生。奇怪的是它适用于Mac,但不适用于Windows。

请求

GET https://somedomain.com/some.xap HTTP/1.1
If-Modified-Since: Mon, 01 Jun 2015 15:13:18 GMT
User-Agent: Silverlight
Host: somedomain.com

响应

HTTP/1.1 200 OK
Content-Type: application/octet-stream
Last-Modified: Tue, 14 Jul 2015 13:02:36 GMT
X-Request-ID: v-5daa5e84-2a36-11e5-bbce-22000ac00b9d
X-AH-Environment: preprod
X-Cache-Hits: 2
X-Age: 1989
Expires: Tue, 14 Jul 2015 15:14:18 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Tue, 14 Jul 2015 15:14:18 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Connection: Transfer-Encoding
X-Akamai-Staging: ESSL

SL运行时获得有效200 OK响应,但抛出灾难性错误消息而不是更新应用程序。从另一个域可以看出:

请求

GET https://somedomain.com/some.xap HTTP/1.1
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
User-Agent: Silverlight
Host: somedomain.com

响应

HTTP/1.1 200 OK
Content-Type: application/x-silverlight-app
Last-Modified: Tue, 14 Jul 2015 10:07:05 GMT
Accept-Ranges: bytes
ETag: "ee4445d61cbed01:0"
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
X-Frame-Options: SAMEORIGIN
Date: Tue, 14 Jul 2015 10:09:04 GMT
Content-Length: 3993496

我已经尝试在有问题的服务器上将内容类型更改为application / octet-stream和application / x-silverlight-app - 没有。错误是一样的。 Xap已签名,正如我所说,这适用于Mac,而不适用于Windows。

请让我知道你的想法。

谢谢。

1 个答案:

答案 0 :(得分:1)

问题出在

Transfer-Encoding: chunked

它破坏了整个Silverlight更新体验。 .xap的主体是以块的形式返回的,而Silverlight运行时并不喜欢它。使服务器返回具有内容长度标头集的正常/非分块响应解决了该问题。

干杯。