Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将ExecuteReader转换为XML HTTP响应_C#_Asp.net_Xml_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 将ExecuteReader转换为XML HTTP响应

C# 将ExecuteReader转换为XML HTTP响应,c#,asp.net,xml,asp.net-mvc,asp.net-web-api,C#,Asp.net,Xml,Asp.net Mvc,Asp.net Web Api,我有一个Web API框架,它调用存储过程,存储过程插入/更新并选择数据库中的记录。Insert/Update起作用,尝试将使用中的ExecuteReader读取的选定记录转换为HTTPResponseMessage [HttpGet] public HttpResponseMessage Get(string Account) { if (string.IsNullOrEmpty(Account)) { return Requ

我有一个Web API框架,它调用存储过程,存储过程插入/更新并选择数据库中的记录。Insert/Update起作用,尝试将使用中的
ExecuteReader
读取的选定记录转换为
HTTPResponseMessage

 [HttpGet]
    public  HttpResponseMessage Get(string Account)
    {
      if (string.IsNullOrEmpty(Account))
        {
          return Request.CreateResponse(new { error = "Input parameters cannot be Empty or NULL" });
        }
       string strcon = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
       SqlConnection DbConnection = new SqlConnection(strcon);
       SqlDataReader reader = null;
       DbConnection.Open();

       SqlCommand command = new SqlCommand("[dbo].[usp_InserUpadte]", DbConnection);
       command.CommandType = CommandType.StoredProcedure;

       //create type table
       DataTable table = new DataTable();
       table.Columns.Add("AccountID", typeof(string));
       table.Rows.Add(Account);

       SqlParameter parameter = command.Parameters.AddWithValue("@account_TT", table);
       parameter.SqlDbType = SqlDbType.Structured;
       parameter.TypeName = "account_TT";

       XmlReader xreader = command.ExecuteXmlReader(); 

       List<QueryResult>qresults = new List<QueryResult>();

       while (xreader.Read())
       {
           QueryResult qr = new QueryResult();
           qr.AccountID = xreader["AccountID"].ToString();
           qr.CounterSeq = xreader["CounterSeq"].ToString();

           qresults.Add(qr);
       }

我还试图在执行API时在文件中写入响应。我之前已经用JSON和OracleDatabase完成了这项工作,但对于这项工作我并不确定。非常感谢您的帮助。

您只需返回
qresults
对象,它将自动序列化为XML(或JSON)。您可以阅读如何将属性添加到
QueryResult
类中,以便按照您希望的方式构造xml

我还建议返回一个
ihttpackationresult
,而不是构建一个
HttpResponseMessage
up。然后,您只需在消息末尾执行此操作,它将根据http
ACCEPT
头自动序列化:

[HttpGet]
public IHttpActionResult Get(string Account)
{
    // rest of implementation left out for readability...    
    return Ok(qresults);
}

我是否需要使用ExecuteReader或XmlReader您可以使用ExecuteReader并让web api处理序列化;它抛出错误,例如发送到ExecuteXmlReader的命令无效。该命令必须返回XML结果,并在运行应用程序时以JSON格式返回结果,如[{“AccountID”:“Research”,“CounterSeq”:“3”}]您在使用什么发出web请求?您必须确保HTTP请求如下:
ACCEPT application/xml
[HttpGet]
public IHttpActionResult Get(string Account)
{
    // rest of implementation left out for readability...    
    return Ok(qresults);
}