我有3个名为Result,Col和Tuple的类。它们实质上代表了序列化的数据库查询。这些是使用Web服务(System.Web.Services.WebService)公开的。然后,此Web服务由另一个操作数据的Web服务(System.ServiceModel.ServiceHost)使用。问题是第二个Web服务被另一个客户端使用,它无法读取任何数据。
以下是3个类别(删除了一点绒毛):
public class Result
{
public List<Col> Columns { get; set; }
public List<Tuple> Tuples { get; set; }
}
public class Col
{
public string ColumnName;
public int? ColumnSequence;
public string DataType;
public int? DataLength;
public int? DataPrecision;
public int? DataScale;
public bool? AllowDbNull;
public bool? IsReadOnly;
public bool? IsLong;
public bool? IsKey;
public string KeyType;
public bool? IsUnique;
public string Description;
}
public class Tuple
{
public List<object> Values = new List<object>();
}
[WebMethod]
public Result Query(string sql, object[] arguments)
{
using (var Conn = Utilities.GetConnection(true))
return Conn.Query(sql, arguments);
}
为了更好的解释,我基本上在第二个Web服务中查询数据库;但是,我回收用于存储结果的数据结构。因此,当客户端查询第二个Web服务时,它只是给它填充数据结构并将其发送给调用客户端。
这是第二个网络服务:
[OperationContract]
public Result QuerySource(String companyCode, String commandText, params object [] arguments)
{
using (var Connection = ClientSettings.Instance.GetOpenConnectionByCode(companyCode))
return Connection.Query(commandText, arguments);
}
我使用了以下代码:
public static string ToXml(this Result result)
{
using (var stringwriter = new StringWriter(CultureInfo.CurrentCulture))
{
new XmlSerializer(result.GetType()).Serialize(stringwriter, result);
return stringwriter.ToString();
}
}
我得到了:
<?xml version="1.0" encoding="utf-16"?>
<Result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Columns xmlns="http://pmh.plexxis.com">
<Col>
<ColumnName>DUMMY</ColumnName>
<ColumnSequence xsi:nil="true" />
<DataType>System.String</DataType>
<DataLength xsi:nil="true" />
<DataPrecision xsi:nil="true" />
<DataScale xsi:nil="true" />
<AllowDbNull xsi:nil="true" />
<IsReadOnly>false</IsReadOnly>
<IsLong>false</IsLong>
<IsKey>false</IsKey>
<IsUnique>false</IsUnique>
</Col>
</Columns>
<Tuples xmlns="http://pmh.plexxis.com">
<Tuple>
<Values>
<anyType xsi:type="xsd:string">X</anyType>
</Values>
</Tuple>
</Tuples>
</Result>
我怀疑这与名称空间有关。任何帮助将不胜感激。