2014-10-24 1 views
-1

저는 첫 번째 웹 서비스를 작성 중이며 어떤 문제가있는 것으로 보입니다. 모든 결과에 아무런 문제가 없지만 사용자 정의 클래스 객체 배열을 반환하려고하면 아무 것도 얻을 수 없습니다. 여기서 내가 뭘 잘못하고 있니?웹 서비스가 배열을 반환해야하지만 대신 아무 것도 반환하지 않습니다.

웹 서비스

public class Service1 : System.Web.Services.WebService 
{ 
    private string strCrossoverConnection = "Connection String"; 

    [WebMethod] 
    public CompetitorMatch[] GetCloseCompetitorMatches(string partNumber, string member) 
    { 
     using (SqlConnection con = new SqlConnection(strCrossoverConnection)) 
     using (SqlCommand cmd = new SqlCommand("[SelectClosestMatch]", con)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.CommandTimeout = 6000; 
      cmd.Parameters.AddWithValue("@SimplePart", partNumber); 
      cmd.Parameters.AddWithValue("@CurrentMember", member); 
      cmd.Parameters.AddWithValue("@isClosestMatch", 1); 
      cmd.Parameters.AddWithValue("@isQuickSearch", 0); 
      CompetitorMatch[] competitorPartMatches = null; 
      con.Open(); 
      using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
      { 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 

       int resultCount = dt.Rows.Count; 
       if (resultCount > 0) 
       { 
        competitorPartMatches = new CompetitorMatch[resultCount ]; 
        for (int i = 0; i < resultCount; i++) 
        { 
         competitorPartMatches[i].PartNumber = dt.Rows[i]["Part Number"].ToString(); 
        } 
       } 
      } 
      return competitorPartMatches; 
     } 
    } 

    public class CompetitorMatch 
    { 
     private string m_partNumber; 
     public CompetitorMatch() { } 
     public CompetitorMatch(string partNumber){ 
      partNumber = PartNumber; 
     } 

     public string PartNumber { get { return m_partNumber; } set { m_partNumber = value; } } 
    } 
} 

반환 :

<CompetitorMatch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://codeproject.com/webservices/"/> 
+0

넣어 당신의 for 루프를 반환, 당신이 쓴 부분 return; – jackjop

+0

글쎄, 이것도 같은 일을 할 수 있습니다, 어쩌면 SQL은 아무것도 얻을 수 있습니다 돌아갑니다 – jackjop

답변

1

데이터베이스에서 결과를 얻고있다 가정하면,이 배열 내부의 새로운 인스턴스를 생성하는 것을 잊지 :

... 
competitorPartMatches = new CompetitorMatch[resultCount]; 
for (int i = 0; i < resultCount; i++) 
{ 
    competitorPartMatches[i] = new CompetitorMatch(); // <-- CREATE NEW INSTANCE! 
    competitorPartMatches[i].PartNumber = dt.Rows[i]["Part Number"].ToString(); 
} 
... 
관련 문제