我的wcf服务突然出现了这个错误:
ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension:
System.ServiceModel.Description.DataContractSerializerOperationBehavior contract:
http://tempuri.org/:IListingService ----> System.MissingMethodException: No parameterless constructor defined
for this object.
at
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) at
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) at
System.Activator.CreateInstance(Type type, Boolean nonPublic) at
System.Runtime.Serialization.SchemaExporter.InvokeGetSchemaMethod(Type clrType, XmlSchemaSet schemas, XmlQualifiedName stableName) at
System.Runtime.Serialization.SchemaExporter.ExportXmlDataContract(XmlDataContract dataContract) at
System.Runtime.Serialization.SchemaExporter.Export() at
System.Runtime.Serialization.XsdDataContractExporter.Export(Type type)
我的公共构造函数在每个类中都没有参数,它仍然给我这个错误。我错过了什么?
答案 0 :(得分:0)
发现问题,我使用OId作为属性类型(来自MongoDB的第三方类型),它没有默认构造函数。将其更改为int并开始工作。但奇怪的是,OId属性工作好几周,我想知道改变了什么......
答案 1 :(得分:0)
我遇到的问题略有不同。
(显然,这是一篇很老的帖子,但对于那些像我一样发现这个问题并且原始答案没有帮助的人来说......)
我认为说接口签名引用的每个对象都需要标记为可序列化是非常合理的。有时在简单的项目中,我们不会想到这一点,因为我们使用的许多(或大多数?)本机.NET对象已经具备此功能。例如," ObjId as Guid"不会导致接口实现的成员的签名出现任何问题。
我遇到的问题是我有多个自定义对象(" Class1,Class2,无论如何)作为我的签名实际引用的对象中的属性。对象(比如MyMainClass)上设置了属性,但我的自定义属性对象没有。一旦我将属性添加到这些类,上面显示的错误就消失了。