在web服务输出中返回数据旁边的DataTable模式

本文关键字:DataTable 模式 数据 返回 web 服务 输出 | 更新日期: 2023-09-27 17:50:38

我使用c#编写了一个web服务,它将在java应用程序中使用。

简单地说,我返回一个包含一个或多个DataTableDataset。输出为XML格式。

现在消费者需要有输出表的模式来知道表名和字段名。

这是webmethod:

[WebMethod]
public DataSet GetWorkTypes(string UserName, string Password)
{
    DataSet ds = new DataSet("CNIS");
    try
    {
        if (User Pass is Correct)
        {
            SqlDataAdapter adapter = new SqlDataAdapter("some query", "connectionString");
            adapter.Fill(ds, "theTable");
            return ds;
        }
        else
        {
            ds.Tables.Add("theTable");
            ds.Tables["theTable"].Columns.Add("Error");
            ds.Tables[0].Rows.Add("Wrong User Pass!");
            return ds;
        }
    }
    catch (Exception ex)
    {
        ds.Tables.Add("theTable");
        ds.Tables["theTable"].Columns.Add("Error");
        ds.Tables[0].Rows.Add(ex.Message);
        return ds;
    }
}

我如何修改我的代码来做到这一点?

编辑:

我希望得到与此不同的输出:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetWorkTypesResponse xmlns="http://cnis/">
      <GetWorkTypesResult>
        <xsd:schema>schema</xsd:schema>xml</GetWorkTypesResult>
    </GetWorkTypesResponse>
  </soap12:Body>
</soap12:Envelope>

我需要一些更有描述性的东西

在web服务输出中返回数据旁边的DataTable模式

您可以向他提供他将接收的样例xml数据。只需输入你的webservice在浏览器中的路径,如下所示:

www.yourdomain.com/yourwebservice.asmx

你将获得服务中的web方法列表。单击其中任何一个来调用并给出所需的参数(如果有的话),您将获得XML数据。

实际上这是我的问题的答案,受到@John Saunders评论的启发。当web服务消费者是java客户端、JQuery或非dotnet客户端时,这不是传递。net特定数据类型(如DataSet)的标准方式。

所以我使用MVC Web API技术来完成工作!没有必要强制使用MVC,但是它提供了一些很好的特性来为web方法生成帮助和文档。