.net 从本地存储的HTML页面访问在线Silverlight应用程序

.net 从本地存储的HTML页面访问在线Silverlight应用程序,.net,silverlight,cross-domain,webbrowser-control,.net,Silverlight,Cross Domain,Webbrowser Control,我有一个关于从本地存储在我的C:/drive上的HTML页面访问在线Silverlight XAP文件的问题。我需要Silverlight应用程序访问一个大文件,我更愿意将其存储在客户机上,以加快整个过程。我想做的是在客户端的硬盘上编写HTML文件,并在其中嵌入所需的内容,从而触发Silverlight应用程序,该应用程序将能够访问DOM中的数据 这在VisualStudio中有效,但当我在本地创建HTML页面并打开它时,Silverlight应用程序就没有运行。要么应用程序未运行,页面为空,要

我有一个关于从本地存储在我的C:/drive上的HTML页面访问在线Silverlight XAP文件的问题。我需要Silverlight应用程序访问一个大文件,我更愿意将其存储在客户机上,以加快整个过程。我想做的是在客户端的硬盘上编写HTML文件,并在其中嵌入所需的内容,从而触发Silverlight应用程序,该应用程序将能够访问DOM中的数据

这在VisualStudio中有效,但当我在本地创建HTML页面并打开它时,Silverlight应用程序就没有运行。要么应用程序未运行,页面为空,要么我收到通知,需要安装Silverlight,即使它已经安装

我知道,作为受信任的应用程序运行Silverlight应用程序将允许访问硬盘,但我正在探索不需要任何用户输入的选项

我曾尝试使用JavaScript将Silverlight部分动态添加到web页面中,但没有成功。我也有同样的问题。下面是JavaScript代码,我已经在一个在线位置对其进行了测试,Silverlight正在那里启动

    function applyChanges(){ 
  var theDiv = document.getElementById("silverlightControlHost");
  theDiv.innerHTML = '<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"><param name="source" value="http://online.company.net/ClientBin/company_xap.xap"/><param name="onError" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="4.0.60310.0" /><param name="autoUpgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0" style="text-decoration:none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/></a></object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>';
}
函数applyChanges(){
var theDiv=document.getElementById(“silverlightControlHost”);
theDiv.innerHTML='';
}
我已经能够使用嵌入在本地HTML文件中的iframe连接到应用程序,但这限制了我对DOM的访问,以便提取所需的内容

我也尝试过将HTML内容从Windows窗体应用程序的内存加载到WebBrowser控件中,但当HTML的其余部分显示出来时,Silverlight应用程序仍然缺失


有没有办法从本地HTML文件访问在线Silverlight应用程序?

嗯,我不知道为什么它不是从本地HTML加载的,但这里有一些解决方法可以帮助您

  • 在客户端iis中托管html(如果适用),这似乎工作正常
或者如果这不可能,试试这个

  • 首先创建一个html页面,该页面将在承载xap文件的服务器上加载xap文件
在本地html文件中,只需将html页面加载到iframe中,如下所示

   <iframe **id="xapHost"** src="http://astrocoder.com/BlogFiles/Silverlight/test.html?id=5" 
    frameborder="0" 
    style="width:500px;height:500px">

我希望这能有所帮助

嗨,马哈茂德,谢谢你的回复。我认为选择1是不可能的。无法保证IIS在所有情况下都可用。嗨,马哈茂德,谢谢你的回复。我认为选择1是不可能的。无法保证IIS在所有实例中都可用。我曾经尝试过iframe选项,它是我遇到的最接近的解决方案。我仍然需要将参数写入父HTML页面中的DOM中。参数正在写入父页面上的隐藏字段中。目前,我无法使用iframe中包含的Silverlight应用程序访问这些参数。你知道通过iframe将参数输入应用程序的方法吗?我已经编辑了上面的答案,通过iframe传递自定义参数添加查询字符串值是我已经研究过的,在这种情况下可以使用。不幸的是,其中一个参数应该是4MB到5MB之间的文件。当我尝试以这种方式将其作为参数添加时,这不起作用。您不能将url传递到文件并从url下载文件吗?!
document.getElementById('xapHost').src = "http://astrocoder.com/BlogFiles/Silverlight/test.html?id=6&anyparam=anything";