C# 是否获取当前客户端Silverlight版本?

C# 是否获取当前客户端Silverlight版本?,c#,silverlight-3.0,C#,Silverlight 3.0,我想知道,当用户打开我正在开发的应用程序的客户端时,是否有一种使用C#获取当前Silverlight版本的方法 它用于日志记录 我想知道他们是否在浏览器上使用C语言使用Silverlight 3或4,只是我不知道,但是你可以用javascript检测它,然后向一个函数发送ajax请求,让服务器知道它的版本 上面的脚本需要一些修改才能使用4.0,但应该足够简单 var dotNetRuntimeVersion = Deployment.Current.RuntimeVersion; var si

我想知道,当用户打开我正在开发的应用程序的客户端时,是否有一种使用C#获取当前Silverlight版本的方法

它用于日志记录

我想知道他们是否在浏览器上使用C语言使用Silverlight 3或4,只是我不知道,但是你可以用javascript检测它,然后向一个函数发送ajax请求,让服务器知道它的版本

上面的脚本需要一些修改才能使用4.0,但应该足够简单

var dotNetRuntimeVersion = Deployment.Current.RuntimeVersion;
var silverlightVersion = Environment.Version.ToString();

在:5、4、3环境中受支持。版本可能与插件版本不同。当我使用Silverlight 4时,我设法找到了和插件版本在主要方面不同的版本,似乎并没有规律性

有办法从JS获取Silverlight插件版本,有办法将JS添加到页面并从Silverlight调用它。因此,使用这里的代码:我设法这样做:

var pScriptElement = HtmlPage.Document.CreateElement("script");
pScriptElement.SetAttribute("type", "text/javascript");
pScriptElement.SetProperty("text", "function GetSilverlightVersion(){var parts = Array(\"ver-major\", \"ver-minor\", \"ver-build\", \"ver-revision\");var nav = navigator.plugins[\"Silverlight Plug-In\"];var versionStr = \"\";if (nav) {versionStr = nav.description;} else {if(SilverlightIsInstalledOnIE)versionStr = GetSilverlightVersionOnIE();else versionStr = -1;}return versionStr;}function SilverlightIsInstalledOnIE(version){if(version == null)version = \"1.0\";var AgControl = new ActiveXObject(\"AgControl.AgControl\");    if(AgControl == null)return false;elsereturn AgControl.isVersionSupported(version);}function GetSilverlightVersionOnIE(){var currVersion = Array(1,0,0,0);for(var i=0;i<currVersion.length;i++){currVersion[i] = FindSupportedMaxVersionOnIE(currVersion, i,0,10000000);}return GetVersionString(currVersion);}function GetVersionString(versionArr,currVersion,index){if(index == null)index = -1;var versionStr = \"\";for(var i=0;i<versionArr.length;i++){if(i>0)versionStr += \".\";if(i==index)versionStr +=currVersion;elseversionStr += versionArr[i];}return versionStr;}function FindSupportedMaxVersionOnIE(versionArr, index,bottom,top){if(bottom >= top){return bottom;}var currVersion = bottom;var prevVersion = currVersion;var step = 1;while(currVersion<top){if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,currVersion,index))){prevVersion = currVersion;currVersion += step;step *= 2;}elsereturn FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,currVersion-1)}if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,top,index)))return top;elsereturn FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,top-1)}");
HtmlPage.Document.Body.AppendChild(pScriptElement);

var slVer = HtmlPage.Window.Invoke("GetSilverlightVersion", null);
var psscriptelement=HtmlPage.Document.CreateElement(“脚本”);
SetAttribute(“类型”、“文本/javascript”);

pScriptElement.SetProperty(“text”,“function GetSilverlightVersion(){var parts=Array(\'ver major\',\'ver minor\',\'ver build\',\'ver revision\');var nav=navigator.plugins[\'Silverlight Plug-In\'];var versionStr=\'”;if(nav){versionStr=nav.description;}else{if(SilverlightIsInstalledOnIE)versionStr=getSilverlightVersiononnie();else versionStr=-1;}返回versionStr;}函数SilverlightIsInstalledOnIE(version){if(version==null)version=\'1.0\;var AgControl=new ActiveXObject(\'AgControl.AgControl\');if(AgControl==null)返回false;elsereturn AgControl.isVersionSupported(version);}函数GetSilverlightVersionOnIE(){var currvision=Array(1,0,0,0);用于(var i=0;i=top){return bottom;}var currvision=bottom;var prevVersion=currvision;var step=1;while(currvision)这是不正确的。Environment.Version显示的是CLR的版本,而不是Silverlight:。在我正在开发的当前应用程序中,我运行的是Silverlight 5.1,但当我检查Environment.Version时,它显示的是5.0。情况不同!