0

内部に関数を持つクラスを含むaspWebサービスがありますが、winformsプロジェクトで参照しているときに、その関数にアクセスできないようです。私のWebサービスの他のすべての側面は機能しており、すべてが私の変更に応じて更新されます。これが私のWebサービスのコードで、私が抱えている問題を示しています。この例では、このWebサービスを参照するwinformプロジェクトからItemOrderのインスタンスを作成する場合、PASSWORD(...)を呼び出すことはできません。

[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)で定義されたメソッドを問題なく呼び出すことができます。誰かがこれがなぜであるかについて何か考えを持っているか、あなたが私を正しい方向に向けることができれば、それはありがたいです。

4

1 に答える 1

2

Webサービスはコードをシリアル化できないため、クラスのメソッドはクライアントプロキシで使用できません(プライベートメソッドのコードがある場合は実行されません)。このメソッドを介してシリアル化されたオブジェクトは、データ転送オブジェクト(ダムプロパティ)のみです。

于 2012-07-24T14:38:03.973 に答える