【发布时间】:2013-06-27 21:06:42
【问题描述】:
[WebMethod]
public engineer getItem()
{
DataClasses1DataContext db = new DataClasses1DataContext();
List<string> list = new List<string>();
string tcNo="13609224456";
var bilgiler = db.bilgilers.First(c => c.tc_kimlik_no ==tcNo);
string adi = bilgiler.adi;
string soyadi = bilgiler.soyadi;
string universite = bilgiler.universite;
engineer e = new engineer(tcNo, adi, soyadi, universite);
return e;
}
我有不止一种方法,我可以无错误地运行 web 服务,但是当我调用 getItem() 方法时,我得到以下异常。我该如何解决这个问题?
[InvalidOperationException: Parametresiz oluşturucusu olmadığından MUHENDIS.Service1.engineer seri hale getirilemez.]
System.Xml.Serialization.TypeDesc.CheckSupported() +3938411
System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError) +170
System.Xml.Serialization.XmlReflectionImporter.ImportMemberMapping(XmlReflectionMember xmlReflectionMember, String ns, XmlReflectionMember[] xmlReflectionMembers, Boolean rpc, Boolean openModel, RecursionLimiter limiter) +65
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, RecursionLimiter limiter) +236
[InvalidOperationException: 'getItemResult' yansıtmada bir hata oluştu.]
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, RecursionLimiter limiter) +843
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(String elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement, Boolean rpc, Boolean openModel, XmlMappingAccess access) +130
System.Web.Services.Protocols.SoapReflector.ImportMembersMapping(XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, Boolean serviceDefaultIsEncoded, Boolean rpc, SoapBindingUse use, SoapParameterStyle paramStyle, String elementName, String elementNamespace, Boolean nsIsDefault, XmlReflectionMember[] members, Boolean validate, Boolean openModel, String key, Boolean writeAccess) +223
System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs) +2989
编辑:Google 将异常消息翻译如下:
- MUHENDIS.Service1.engineer 不是无参数构造函数被序列化。
- 'getItemResult' 以反映发生的错误。
【问题讨论】:
-
猜猜你需要一个工程师的无参数构造函数
-
@V4Vendetta 它可以工作,但是我如何在没有构造函数的情况下定义一个对象??
-
未命名 - 如果您也发布您的工程师课程源代码会有所帮助。但基于堆栈跟踪@V4Vendetta 是正确的。
-
@Unnamed - 您必须定义无参数构造函数,以便序列化程序可以使用该对象。如果您无法触及业务域中的对象,则必须为 Web 服务创建另一个对象,并将属性从业务域对象复制到 Web 服务对象。
-
@Unnamed 你需要一个 parameterless constructor ,检查那里解释的链接(类似于
engineer(){})
标签: c# web-services object asmx