2012-07-24 5 views
0

내부에 함수가있는 클래스가 포함 된 asp 웹 서비스가 있습니다. 그러나 해당 함수를 내 winforms에서 참조 할 때 해당 함수에 액세스 할 수 없습니다. 계획. 내 웹 서비스의 다른 모든 측면이 작동하고 내 변경 사항에 따라 모든 내용이 업데이트됩니다. 다음은 내가 가지고있는 문제를 보여주는 웹 서비스의 코드입니다. 이 예제에서,이 웹 서비스를 참조하는 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 = ""; 
    } 
} 

위 코드는 내 전체 상황이 아니라 단순화 된 예입니다. 내 문제는 내가 웹 서비스 클래스 내에 정의 된 클래스에 대한 메서드를 호출 할 수 없다는 것입니다. 루트 웹 서비스 클래스 (MyWebService)에 정의 된 메서드를 아무 문제없이 호출 할 수 있습니다. 누구에게 이것이 왜 있는지 또는 올바른 방향으로 나를 지적 할 수있는 아이디어가 있다면 그 점을 인정할 것입니다.

답변

2

웹 서비스는 코드를 직렬화 할 수 없으므로 클래스의 메서드를 클라이언트 프록시에서 사용할 수 없으며 개인 메서드에 코드가 있으면 실행되지 않습니다. 이 메서드를 통해 직렬화 된 객체는 데이터 전송 객체 (바보 속성)입니다.

관련 문제