【发布时间】:2011-11-30 10:16:10
【问题描述】:
我想从我的 Web 服务获取用户 List<User> 对象的通用列表到我的 Web 应用程序。可能这是常见问题。我搜索了很多,但每个链接都有不同的补救措施。所以最后我决定在这里问小伙子......无论如何
我正在使用控制台应用程序从我托管的 wcf Web 服务中获取数据。作为我的具有实体框架 4.1 的 WCf Web 服务。我正在使用其模型类中的对象。当我尝试向我的 Web 应用程序添加服务引用时,它通常会在 Web 应用程序中生成代理。我能够发布数据意味着我可以创建用户。但是当 getusers 返回 List 时,出现以下异常...:
例外:
接收 HTTP 响应时出错 http://myserver/AdminService/MyAdminService.svc。这可能是由于 服务端点绑定不使用 HTTP 协议。这可以 也可能是由于服务器中止了 HTTP 请求上下文 (可能是由于服务关闭)。查看服务器日志了解更多信息 详情。内部异常是:
底层连接已关闭:发生意外错误 在接收时inner-inner 异常是:无法从 传输连接:现有连接被强行关闭 远程主机。
带有消息:现有连接被强制关闭 远程主机
错误代码:10054正如事件日志所说:
未记录消息。
异常:System.ServiceModel.CommunicationException:有 尝试序列化参数时出错 http://tempuri.org/:getUsersResult。 InnerException 消息是 '类型 'System.Data.Entity.DynamicProxies.User_00DEC686D7E21DB0D84B595F647A03FFB4943938F76E8C3DBBE0F77F8BC29A1D' 带有数据合同名称 '用户_00DEC686D7E21DB0D84B595F647A03FFB4943938F76E8C3DBBE0F77F8BC29A1D:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 预计不会。考虑使用 DataContractResolver 或添加任何 已知类型列表中静态未知的类型 - 例如, 通过使用 KnownTypeAttribute 属性或将它们添加到 传递给 DataContractSerializer 的已知类型列表。请参见 InnerException 了解更多详情。 ---> System.Runtime.Serialization.SerializationException:类型 'System.Data.Entity.DynamicProxies.User_00DEC686D7E21DB0D84B595F647A03FFB4943938F76E8C3DBBE0F77F8BC29A1D' 带有数据合同名称 '用户_00DEC686D7E21DB0D84B595F647A03FFB4943938F76E8C3DBBE0F77F8BC29A1D:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 预计不会。考虑使用 DataContractResolver 或添加任何 已知类型列表中静态未知的类型 - 例如, 通过使用 KnownTypeAttribute 属性或将它们添加到 传递给 DataContractSerializer 的已知类型列表。 在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract、XmlWriterDelegator xmlWriter、对象 obj、布尔值 verifyKnownType,RuntimeTypeHandle 声明的TypeHandle,类型 声明类型) 在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType(XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle objectTypeHandle, Type objectType,Int32 声明的TypeID,RuntimeTypeHandle 声明类型句柄,类型声明类型) 在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 声明的TypeID,RuntimeTypeHandle 声明的TypeHandle) 在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 声明的TypeID,RuntimeTypeHandle 声明的TypeHandle) 在 WriteArrayOfUserToXml(XmlWriterDelegator,对象, XmlObjectSerializerWriteContext , CollectionDataContract ) 在 System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter、对象 obj、XmlObjectSerializerWriteContext 上下文) 在 System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver) 在 System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver) 在 System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver) 在 System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter 作家,对象图) 在 System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart(XmlDictionaryWriter writer,PartInfo 部分,对象图) --- 内部异常堆栈跟踪结束 --- 在 System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart(XmlDictionaryWriter writer,PartInfo 部分,对象图) 在 System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameter(XmlDictionaryWriter writer,PartInfo 部分,对象图) 在 System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeBody(XmlDictionaryWriter writer,MessageVersion 版本,字符串操作,MessageDescription messageDescription, Object returnValue, Object[] 参数, Boolean 是请求) 在 System.ServiceModel.Dispatcher.OperationFormatter.OperationFormatterMessage.OperationFormatterBodyWriter.OnWriteBodyContents(XmlDictionaryWriter 作家) 在 System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter 作家) 在 System.ServiceModel.Channels.Message.ToString(XmlDictionaryWriter 作家) 在 System.ServiceModel.Diagnostics.MessageLogTraceRecord.WriteTo(XmlWriter 作家) 在 System.ServiceModel.Diagnostics.MessageLogger.LogInternal(MessageLogTraceRecord 记录) 在 System.ServiceModel.Diagnostics.MessageLogger.LogMessageImpl(消息& 消息,XmlReader 阅读器,MessageLoggingSource 源) 在 System.ServiceModel.Diagnostics.MessageLogger.LogMessage(消息& 消息,XmlReader 阅读器,MessageLoggingSource 源) 进程名称:w3wp 进程 ID:5928
这应该是什么问题。我和团队自 3 天以来一直在寻找这个。但不幸的是到目前为止还没有克服......
我尝试了很多东西,比如添加可序列化属性、端点修改......我无法全部回忆:)......也许你可以给我们正确的方向......
【问题讨论】:
标签: wcf xml-serialization entity-framework-4.1