2009-08-05 65 views
0

我已经建立了这个小型的Web应用程序。它有一个activex控件通过javascript将非托管代码返回到Silverlight应用程序中。在silverlight中,我对返回的值执行封送处理操作。当我只执行GetSize()的简单操作时,会遇到一个stupefing错误。这让我想起了我的问题:如果可以的话,是否可以在silverlight中进行一次marhsalling操作?编组silverlight中的非托管代码

+0

嗨,你可以考虑添加更多的信息 - stupefing错误,或更多关于你的GetSize()操作存在的信息? – 2009-08-05 17:35:27

回答

3

Silverlight的安全模型和沙盒不允许“透明”(用户代码和应用程​​序)执行p/invokes,可信操作或任何此类。

如果您已经安装并可用于网页的ActiveX控件,则需要使用Silverlight的HTML互操作性功能来自己编组数据。有一个特定于Silverlight 2的MSDN article about the HTML bridge,但在Silverlight的新版本中也会发现它。

这假设您的ActiveX控件可以通过浏览脚本/ JavaScript访问。

尽管某些数字和其他原语的编组在平台中运行良好,但您最终可能会通过使用字符串将您的所有数据从ActiveX控件中移出,然后在Silverlight客户端上解析它。

这可能至少启用您的方案。

+0

我想从activex通过JavaScript的字节数组,并进入silverlight。由于JavaScript只支持原生的非托管代码,我无法发送我的字节数组。因此,我想到了执行一个简单的编组操作,这也失败了......有什么办法可以绕过这个? – vondip 2009-08-05 21:32:15

+0

您可以编码该字节数组。在JavaScript中,您是否可以遍历字节数组并将其转换为十六进制字符串?然后你可以将它传递给Silverlight。 HTML互操作性功能是完成这个任务的方式,但是你必须在中间做一些工作。 – 2009-08-05 22:39:33

+0

哇,我有一个巨大的字节数组(我的意思是,真的很大的东西类似于编码图像)是唯一的出路吗? – vondip 2009-08-06 03:45:38