【问题标题】:Exceptions when using web service with EF将 Web 服务与 EF 一起使用时的异常
【发布时间】:2011-12-06 02:22:33
【问题描述】:

我在调用我的网络服务时遇到了这个异常。我在我的服务中使用 EF 并尝试返回由 EF 创建的 POCO 类。有什么想法吗??

System.Web.Services.Protocols.SoapException:服务器无法 处理请求。 ---> System.InvalidOperationException:有 生成 XML 文档时出错。 ---> System.InvalidOperationException:类型 System.Data.Entity.DynamicProxies.Job_3C04107CB03F22888B19EF7537A795C816D03441852DC37A42729E7542384BBE 没想到。使用 XmlInclude 或 SoapInclude 属性 指定静态未知的类型。在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_Job(字符串 n, String ns, Job o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_GetJobByNumberResponse(Object[] p) 在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer13.Serialize(对象 objectToSerialize,XmlSerializationWriter 作家)在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 String id) --- 内部异常堆栈跟踪结束 --- at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 字符串 id) 在 System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues,流输出流)在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] 返回值)在 System.Web.Services.Protocols.WebServiceHandler.Invoke() --- 结束 内部异常堆栈跟踪---

好的,我发现一篇文章提到将 ProxyCreationEnabled 属性设置为 false;我已经这样做了,现在它工作正常。将此属性设置为 false 的连锁反应是什么

【问题讨论】:

    标签: c# web-services entity-framework-4 web


    【解决方案1】:

    您需要在 EF 上下文中禁用延迟加载和代理创建,否则您的 POCO 作为异常状态实际上是一个无法序列化的DynamicProxy

    This article 将提供更多信息。

    【讨论】:

    • 我将 ProxyCreationEnabled 属性设置为 false,我没有更改 LazyLoadingEnabled。将 ProxyCreationEnabled 设置为 false 的连锁反应是什么?
    • 这意味着您不会得到延迟加载,但是如果您在 WCF 服务的上下文中考虑这一点,那就是您想要的。一旦对象在客户端反序列化并且 WCF 通道已关闭,它就无法延迟加载任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2011-01-08
    • 2015-09-30
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多