【问题标题】:Silverlight, EF, member collection of type EntityCollection - not sure how to pass via WCFSilverlight,EF,EntityCollection 类型的成员集合-不确定如何通过 WCF
【发布时间】:2011-12-13 09:10:50
【问题描述】:

我收到一个安全错误:

内部异常是:{System.Security.SecurityException ---> System.Security.SecurityException:安全错误。

更新 我的问题是因为类别类型(通过 WCF 传递)在 Products 集合中。类别和其余模型类型是使用实体框架生成的代码。 Categories 中的 Products 成员是 EntityCollection 类型。

类别中的 Products 集合:(生成的代码)

    [XmlIgnoreAttribute()]
    [SoapIgnoreAttribute()]
    [DataMemberAttribute()]
    [EdmRelationshipNavigationPropertyAttribute("inventory_db_bigModel", "Products_fk", "Products")]
    public EntityCollection<Products> Products

问题是如何在客户端 ServiceReference 中声明 Products 集合? 我尝试使用 ObservableCollection 和通用列表,但它给了我同样的安全错误。 客户端 ServiceReference 代码是生成代码,我不确定解决方案如何,因此我不必在每次重新生成时都对其进行编辑。

【问题讨论】:

    标签: silverlight wcf entity-framework


    【解决方案1】:

    您是否在 WCF 服务上设置了 clientaccesspolicy.xml 和/或 crossdomain.xml

    按照设计,Silverlight 被禁止进行跨域调用,以防止跨站点伪造等安全威胁。

    要使 Silverlight 控件能够访问另一个域中的服务,该服务必须明确选择加入以允许跨域访问。通过选择加入,服务声明其公开的操作可以由 Silverlight 控件安全地调用,而不会对服务存储的数据造成潜在的破坏性后果。

    要允许连接,您必须在要使用的服务的根目录中设置 clientaccesspolicy.xmlcrossdomain.xml 文件。

    MSDN 有更多信息。

    【讨论】:

    • 是的,我有这些文件。应用程序的另一部分使用 GetUsers 检索用户列表工作正常,因此与 WCF 服务的通信没有问题。此用户模型类型内部没有实体框架集合。正如我在更新后解释的那样,Categories 模型类型内部有一个 Entity Framework Collection 类型。所以我得到的错误是因为里面有这个实体集合,我不确定如何用 wcf 传递它。
    • @PaulRusu - 你为什么不在你的问题中包含这些信息?它彻底改变了问题的性质。
    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多