C# 프로젝트에 대한 웹 참조로 추가 될 때 액세스하려는 웹 서비스가 있습니다. 웹 서비스의 특정 메서드는 SQL 쿼리 문자열을 사용하고 쿼리의 결과를 사용자 지정 형식으로 반환합니다. 웹 서비스 참조를 추가하면 메소드가 사용자 정의 유형 대신 DataSet[]
을 반환하는 것으로 나타납니다. 이것들은 여전히 DataSet
개체 내의 쿼리에서 반환 된 데이터에 어떻게 든 액세스 할 수 있다면 괜찮습니다. 6 행을 반환해야하는 특정 쿼리를 실행했습니다. 나는 6 원소로 DataSet[]
배열을 되찾았다. 그러나 DataSet
개체를 반복 할 때 어떤 테이블도 가지고 있지 않습니다 (Tables
속성을 통해 DataSet
에 있음). 뭐라 구요? 내 데이터는 어디에 있습니까?웹 서비스에서 반환 된 DataSet 객체 배열에서 데이터 가져 오기
웹 서비스는 보고서 작성기 2.0 보고서의 데이터 소스로 사용할 때 테스트되고 작동합니다. 웹 서비스에 XML SOAP 쿼리를 보내고 내 데이터가 포함 된 XML 결과를 가져올 수 있습니다.
var service = new MyWebService
{
Credentials = System.Net.CredentialCache.DefaultCredentials
};
DataSet[] dataSets = service.MethodThatReturnsQueryResults(queryString);
// The body of this loop is skipped:
foreach (DataSet ds in dataSets.Where(ds => ds.Tables.Count > 0))
{
// extract data from DataSet ds
}
편집 : 여기이 방법은 내가를 추가 할 때 생성있어 자동 생성 된 Reference.cs의 모습입니다 여기서
내가DataSet[]
배열을 얻고있다 방법의 샘플입니다 웹 참조 :
[return: System.Xml.Serialization.XmlArrayItemAttribute("SomeCustomType")]
public System.Data.DataSet[] MethodThatReturnsQueryResults(
string selectSQLQuery) {
object[] results = this.Invoke("MethodThatReturnsQueryResults",
new object[] { selectSQLQuery});
return ((System.Data.DataSet[])(results[0]));
}
이 그래서 확실히 System.Data.DataSet[]
를 반환,하지만 뭔가 웹 서비스, SomeCustomType
에 사용되는 사용자 정의 유형이 아닌 그런 일이 일어나고 궁금 자동으로 생성 된 메서드에서 올바르게 변환되므로 빈 DataSet
개체가됩니다. 이 자동 생성 된 메서드를 편집하는 것을 주저합니다. 웹 서비스 코드에 액세스 할 수 있습니다. SomeCustomType
을 DataSet[]
으로 전송하려면 무엇인가해야합니까?
편집 : 웹 서비스에서 원시 XML SOAP 응답을받은 경우 더 잘할 수 있다고 생각합니다. DataSet[]
으로 다시 돌아 오는 "번역 된"버전을 얻는 대신 어떻게해야합니까?
Sysytem.Data.Dataset을 확인 했습니까? –
@Henk : 웹 서비스 메소드의 반환 유형을 표시하기 위해 내 질문을 업데이트했습니다. –
WebNethod의 (헤더)를 서버 측에 게시하면 도움이 될 수 있습니다. –