是否可以确定IE是否从C#或powershell代码重新下载Silverlight xap?

时间:2019-02-26 14:58:58

标签: windows internet-explorer networking silverlight

我们仍然有Silverlight(悲伤的故事),我需要编写烟雾测试,以检查IE在部署后访问该站点时是否重新下载XAP文件。重新下载XAP意味着存在某种配置/部署问题,这很糟糕。

代码是C#或Powershell,并且必须在没有人工干预的情况下运行。例如,它运行在专用的测试运行器机器上,可以在其中安装Fiddler。

但是,使用Fiddler或任何全局代理解决此问题并不理想,因为使用同一测试运行程序来对我们云中部署的不同站点进行烟雾测试。不过有可能。额外的麻烦在于,Fiddler必须安装其SSL证书才能解密HTTPS流量。简而言之,我不确定这是否正确。另外,我不清楚如何自动执行这些步骤:

  1. 安装证书
  2. 开始捕获
  3. 获取捕获的流量
  4. 停止捕获
  5. 删除证书

因此,我正在寻找有关如何执行此操作的建议,而不一定通常使用Fiddler或全局HTTP代理。有什么想法吗?

编辑1

此测试已在手动烟雾测试列表中。我们正在自动执行这些测试,现在轮到该测试了。

1 个答案:

答案 0 :(得分:1)

似乎您正在尝试测试IE的行为,这不切实际。

例如,IE可能被配置为始终在退出时删除其缓存,因此重新下载XAP是后续请求中的预期行为。

我实际上会尝试测试托管HTML页面和/或HTTP响应。

例如,您可以使用WebRequest以编程方式请求网页,然后检查响应是否在其标头中包含内容过期或缓存控件,从而告诉浏览器是否应缓存该页面

您可能还希望检查其<param />值具有URL的网页上<object />元素的source子元素。

鉴于URL与以前相同,浏览器将缓存XAP文件。 因此,您可以检查该值是否随后续请求而更改。

来自https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/gg701782(v%3Doffice.14)
...浏览器将像基于设置的缓存策略的任何其他文件一样缓存此.xap文件。

以下是一些示例C#代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://example.com/SilverlightHostingPage.html"));

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string cacheControlHeader = response.GetResponseHeader("Cache-Control");
// TODO: check header value

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(response.GetResponseStream());
string xapUrl = xmlDoc.DocumentElement.SelectSingleNode("//object/param[@name='source']").Attributes("value").Value;
// TODO: check xap url