2013-06-27 3 views
3
[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; 
    } 

У меня есть более чем один метод, и я могу запустить веб-сервис без ошибок, но когда я вызываю метод getItem() я получаю следующее исключение. Как я могу исправить проблему?Как я могу вернуть определенный пользователь объект из ASMX Webservice

[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 

Edit: Google переводит сообщение об исключениях, как:

  1. MUHENDIS.Service1.engineer не конструктор без параметров сериализации.
  2. 'getItemResult', чтобы отразить возникшую ошибку.
+3

Угадайте вам нужен конструктор без параметров для инженера – V4Vendetta

+0

@ V4Vendetta он работает, но как я могу определить объект без конструкторы ?? – Unnamed

+1

Без имени: Это поможет, если вы опубликуете также свой источник инженерного класса. Но на основе трассировки стека @ V4Vendetta правильно. –

ответ

1

Как мне кажется, вам необходимо определить метод getItem.

[WebMethod] 
[XmlInclude(typeof(engineer))] 
public engineer getItem(){ 
//codes here 
} 
//engineer class here 

без атрибутов XmlInclude, то XmlSerializer не сможет сериализации инженера

+0

i не работает. – Unnamed

+0

Вы отметили класс инженера как последовательный? –

3

Вы должны убедиться, что ваш класс инженера отмечен как сериализация.

[Serializable] 
public class engineer{ .... 
+0

Этот атрибут применяется к сериализации XML, а также к двоичной сериализации? Я использовал его только в контексте двоичной сериализации. –

+0

Да, это относится как к [http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx](http://msdn.microsoft.com/en-us/library/vstudio/ms233843. ASPX) –