是否有可能弄清楚IE是否从C#或PowerShell代码重新下载Silverlight xaps?

问题描述 投票:0回答:1

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

代码是C#或Powershell,当然必须在没有人为干预的情况下运行。它运行在专用的测试跑步机上,例如我可以安装Fiddler。

但是,使用Fiddler或任何全局代理并不理想,因为使用相同的测试运行器来测试我们的云中部署的不同站点。但是有可能。另外一个复杂因素是,Fiddler必须安装其SSL证书才能解密HTTPS流量。简而言之,我不确定这是否正确。另外,我不清楚如何自动执行这些步骤:

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

所以,我正在寻找关于如何做到这一点的建议,一般不一定使用Fiddler或全局HTTP代理。有任何想法吗?

编辑1

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

windows internet-explorer networking silverlight
1个回答
2
投票

看起来你正试图测试IE的行为,这是不切实际的。

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

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

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

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

如果URL与之前的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
© www.soinside.com 2019 - 2024. All rights reserved.