我有一个标准的WebBrowser
控件,它已被修改为在边缘模式下使用IE11(see here for details for how I did that)。
我无法在某些网站上播放Flash内容,其中一个值得注意的是BBC iPlayer以及需要在BBC网站上播放Flash的其他媒体,我收到以下错误:
初始化播放器时出现问题。 浏览器中的脚本访问被拒绝。
我可以使用Internet Explorer查看此内容,并在IE中启用脚本访问。通过将WebBrowser
属性设置为true可以在ScriptErrorsSuppressed
控件中抑制错误,即使设置为false,我仍然无法在BBC网站上查看媒体。
我安装了Flash版本17,0,0,188(撰写本文时的最新版本)。
如何使用WebBrowser
控件查看BBC iPlayer?
更新
我使用安装了Flash 15并且BBC iPlayer和媒体工作的计算机对此进行了测试。所以问题出在这个版本的Flash上,我猜?
答案 0 :(得分:2)
关于这个问题的一般共识是,它是一个长期存在的Flash bug,似乎永远无法解决。您可以通过以下链接获取更多信息:
归结为缓存跨域ActiveX控件。我还没有完全解决这个问题,但是发现在WebBrowser控件的注册表中设置一些功能设置有所帮助。
似乎对我有影响的主要设置是:
SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_OBJECT_CACHING
SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_OBJECT_CACHING
MSDN:https://msdn.microsoft.com/en-us/library/ee330729(v=vs.85).aspx#object_caching
我通过组策略将这两个设置为'0'。我最终有4个条目,因为我为HKCU和HKLM荨麻疹做了(可能不需要,但我正在尝试一切)。
我还将通常的'FEATURE_BROWSER_EMULATION'设置为11000以便使用IE11。
MSDN:https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation
还有这个设置应该过滤掉IE缓存:
Software\Microsoft\Windows\CurrentVersion\Internet Settings\MimeExclusionListForCache
附加'application / x-shockwave-flash'应该可以防止flash对象的缓存,但是我没有看到任何帮助。
这些是我也应用的一些组策略设置:
有一天,我有点疯狂,并尝试更改所有设置进行测试。这是我通过组策略修改的注册表设置的屏幕截图:
即使在完成所有这些工作之后,我也只能从Facebook(我用来测试的那个)获取视频加载一次,后续视频失败。但是,重新启动应用程序似乎有效。这是不可接受的,但这是我现在所能达到的目标。
有些人提到清除导航缓存可以解决问题,但我没有采用这种方法,因为我认为它会减慢浏览体验。如果你只清除缓存的flash对象,这种方法可能会很好,但同样,我没有测试过。
答案 1 :(得分:0)
我更喜欢在每次启动控件时加载来自IE Cache的swf文件并加载包含flash激活内容的页面:
private void ClearCachedSWFFiles()
{
try
{
var cachefolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) +
"\\Microsoft\\Windows\\INetCache\\IE";
var dirinfo = new DirectoryInfo(cachefolder);
foreach (var directoryInfo in dirinfo.GetDirectories())
{
foreach (var fileInfo in directoryInfo.GetFiles("*.swf"))
{
fileInfo.Delete();
}
}
}
catch (Exception ex)
{
throw ex;
}
}