2009-08-05 92 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