C#.NET WebService返回对象

我正在使用ASP.NET C#创建Web服务。 我从Web服务发送各种数据类型,所以我使用以下结构。

public enum WS_ServiceResponseResult { Success, Failure, } public class WS_ServiceResponse { public WS_ServiceResponseResult result { get; set; } public object data { get; set; } } public class WS_User { public long id{ get; set; } public string name{ get; set; } } 

Web服务示例方法

  [WebMethod(EnableSession = true)] public WS_ServiceResponse LogIn(string username, string pasword) { WS_ServiceResponse osr = new WS_ServiceResponse(); long userID = UserController.checkLogin(username, pasword); if (userID != 0) { osr.result = WS_ServiceResponseResult.Success; osr.data = new WS_User() { id = userID, name = username }; } else { osr.result = WS_ServiceResponseResult.Failure; osr.data = "Invalid username/password!"; } return osr; } 

我使用两种客户端类型,javascript和C#.NET Windows Form。 当我从javascript调用时,我没有遇到任何问题,osr.data充满了WS_User。 所以我可以轻松地使用osr.data.id。 但是,当我使用C#.NET(使用“添加Web引用”生成代理)时,我可以成功调用但是当结果到达时,我得到了Soapexception

{System.Web.Services.Protocols.SoapException:System.Web.Services.Protocols.SoapException:服务器无法处理请求。 —> System.InvalidOperationException:生成XML文档时出错。 ……

我错过了什么? 我猜对象没有明确定义并导致问题。 解决方法有哪些?

谢谢

Maksud

加成:

如果添加以下虚拟方法,那么它可以很好地工作。 希望它有所帮助,以获得解决方案。

  [WebMethod] public WS_User Dummy() { return new WS_User(); } 

我有一个类似的问题返回一个“对象”(多个类可能)这是一个示例代码:

 [Serializable()] [XmlRoot(ElementName="Object")] public sealed class XMLObject { private Object _Object; [XmlElement(Type=typeof(App.Projekte.Projekt), ElementName="Projekt")] [XmlElement(Type=typeof(App.Projekte.Task), ElementName="Task")] [XmlElement(Type=typeof(App.Projekte.Mitarbeiter), ElementName="Mitarbeiter")] public Object Object { get { return _Object; } set { _Object = value; } } } 

我认为你应该这样改变你的代码:

 [XmlRoot(ElementName="ServiceResponse")] public class WS_ServiceResponse { public WS_ServiceResponseResult result { get; set; } [XmlElement(Type=typeof(WS_User), ElementName="WS_User")] [XmlElement(Type=typeof(string), ElementName="Text")] public object data { get; set; } }