无法在Web服务中访问类中的方法

时间:2012-07-24 14:30:56

标签: c# asp.net web-services

我有一个asp web服务,它包含一个在其中有一个函数的类,但是当我在winforms项目中引用它时,我似乎无法访问该函数。我的web服务的所有其他方面都在工作,所有内容都根据我的更改进行更新。这是我的Web服务中的代码,它说明了我遇到的问题。在示例中,如果我要从引用此Web服务的winform项目创建ItemOrder的实例,我将无法调用AddItem(...)。

[WebService(Namespace = "http://myurl.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class MyWebService : System.Web.Services.WebService
{

    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://myurl.com/")]
    public class ItemOrder
    {
        public string OrderNumber = "";
        public DateTime OrderDate = DateTime.Now;
        public decimal TotalCost = 0M;

        internal List<Item> items = new List<Item>();

        [WebMethod]
        public void AddItem(string reference)
        {
            Item item = new Item();
            item.ItemReference = reference;
            items.Add(item);
        }
    }

    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://myurl.com/")]
    public class Item
    {
        public decimal Cost = 0M;
        public decimal Price = 0M;
        public string ItemReference = "";
    }
}

上面的代码是一个简化的例子,而不是我的整个情况。我的问题是我无法为Web服务类中定义的类调用任何方法。我可以调用根Web服务类(MyWebService)中定义的方法没问题。如果有人有任何想法,为什么会这样,或者如果你能指出我正确的方向,那将不胜感激。

1 个答案:

答案 0 :(得分:2)

Web服务无法序列化代码,因此您的类中的方法将无法供客户端代理使用(如果您在私有方法中使用代码,则不会执行该代码)。通过此方法序列化的对象只是数据传输对象 - 哑属性。