1

我手头有点困惑,希望你能帮忙。

我一直在为 Silverlight 4 中的客户端开发 Silverlight 应用程序。但是很明显,我需要一个按钮来允许全屏模式。这很好而且很花哨,但是当处于全屏模式时,Silverlight 4 出于安全原因禁用了大部分键盘输入......所以全屏模式以使将数据输入 ChildWindowForms 变得更容易的原因变得毫无意义。

我应该指出我不能让这个应用程序脱离浏览器,因为它必须坐在 Dynamics CRM 2011 中才能获取上下文并记录它所在的 ID。

于是我开始涉足 Silverlight 5。这个版本允许应用程序以提升信任模式在浏览器中运行。以前只能作为浏览器外模式使用。

一切都很顺利,我发现我需要获得一个证书来签署我的代码,添加一些注册表项和用户来向受信任的发布者添加一个证书并让它工作。惊人的。

当我尝试运行我的应用程序时出现了我的问题,我遇到了这样的异常:

There is an error in XML document (1, 41). ---> System.TypeAccessException: 
Attempt by security transparent method to access security critical type failed.

在这一点上,所有改变代码的方式都是我用证书签署了我的项目。

似乎在 Silverlight 5 中它不“信任”XmlSerializer我用来读取某些 XML 配置并反序列化为 .Net 对象的对象

经过一番挖掘,似乎镇上有一个新的序列化器可以为 Silverlight 5 执行此操作,DataContractSerializer所以我想,太好了,我可以修改一些序列化代码,一切都会好起来的。可惜不是这样。

在这个版本中,这个版本的 Serializer 似乎快了 33%。它更快的原因是 XML 中的所有节点都必须按字母顺序排列。如果它们不在此顺序中,则它们被读入为空。(如果它们碰巧在正确的位置,它们将被正确读取。)

所以我的问题是这个。我是否别无选择,只能将我所有的 XML 配置文件按字母顺序重新组织以适应这个新的 Serialzer,或者有没有办法使用旧的 XML 序列化器并让 Silverlight 5 信任它?

4

1 回答 1

1

首先,DataContractSeriailiser 对 Silverlight 5 来​​说并不新鲜,它以前就在那里。

我相信,按字母顺序排列的节点是默认设置。DataMemberAttribute您可以附加到每个被序列化的属性的属性有一个属性Order,您可以使用它来指示它们出现的顺序。

于 2011-11-24T18:20:00.680 回答