从XML Web Service返回DataSet时出错

时间:2012-11-15 12:54:56

标签: c# web-services

我创建了需要从SQL Server获取数据的Windows应用程序。为了方便起见,我还有XML Web Service,这里是我用来返回DataSet的代码:

`

[WebMethod]
public DataSet GetDataSet(SqlCommand cmd)
{
    using (SqlConnection Conn = new SqlConnection(ConnString))
    {
        cmd.Connection = Conn;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        try
        {
            //Conn.Open();
            using (DataSet DS = new DataSet())
            {
                da.Fill(DS);
                return DS;
            }
        }
        catch (Exception ex)
        {
            return (new DataSet());
        }
        finally
        {
            if (da != null)
            {
                da.Dispose();
            }
        }
    }
}

`

当我想将我的Web服务添加到我的Win Application Project时,它会出现以下错误:

Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface

任何建议都将受到高度赞赏。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可能需要阅读以下文章,因为我认为您不能序列化接口对象: -

http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/bac96f79-82cd-4fef-a748-2a85370a8510/

答案 1 :(得分:1)

SqlCommand无法序列化,因此您需要在函数中实例化。

 [WebMethod]
 public DataSet GetDataSet()
 {
 SqlCommand cmd = new SqlCommand();
 using (SqlConnection Conn = new SqlConnection(ConnString))
 {
    cmd.Connection = Conn;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    try
    {
        //Conn.Open();
        using (DataSet DS = new DataSet())
        {
            da.Fill(DS);
            return DS;
        }
    }
    catch (Exception ex)
    {
        return (new DataSet());
    }
    finally
    {
        if (da != null)
        {
            da.Dispose();
        }
    }
  }
}