在HTML对象中提供Silverlight或嵌入标记base64编码数据

时间:2010-02-18 00:25:37

标签: silverlight base64 embedded-resource

可以使用<img src="data:image/gif;base64,UEsDBBQAAAgIALp9...MTs9Snj3==">

对图像进行base64编码并将其作为html内容的一部分传送

我注意到Silverlight的对象标签应该是这样的:

<object type="application/x-silverlight"  
    data="data:application/x-silverlight;base64,"   
    width="300" height="300">  
    <param name="source" value="myApp.xap"/>  
<object>

似乎我应该能够使用与图像相同的技术来加入它:

<object type="application/x-silverlight"  
    data="data:application/x-silverlight;base64,SOFIjoije3r8...WMDioaAAA=="   
    width="300" height="300">   
<object>

让它从data参数中的base64编码加载xap文件数据。但这不起作用 - 它加载了Silverlight插件,IE或Firefox中没有错误,但xap模块没有运行。

我知道浏览器对这种事情的语法非常挑剔,所以我问你们。

目的是将Silverlight嵌入到asp.net服务器控件中,而不需要开发人员在某处托管xap并解决xap的uri等额外的复杂性。我主要对加载xap感兴趣来自嵌入式base64编码的字符串,但如果无法做到这一点,那么将Silverlight应用程序简化为单行代码的良好解决方案就必须这样做。

谢谢!

2 个答案:

答案 0 :(得分:2)

即使你要让它发挥作用,我建议不要使用该approroach,原因如下:

  1. 加载整个页面所需的时间很长
  2. 这不利用XAP的任何浏览器缓存,因此每次加载页面时,都必须读取xap。

答案 1 :(得分:0)

我很感谢你们所有时间来看我的问题。我发现“更好的解决方案”是WebResource.axd - 它为我们提供了直接从正确装饰的程序集中加载资源的能力。太棒了。我想我必须要求消费者将各种垃圾添加到web.config中以获得自定义的httpHandlers或其他东西,但事实证明,为此目的,从asp.net 2.0开始包含WebResource.axd。

以下是我发现的所有文章:

http://www.4guysfromrolla.com/articles/080906-1.aspx