C# 将ExecuteReader转换为XML HTTP响应
我有一个Web API框架,它调用存储过程,存储过程插入/更新并选择数据库中的记录。Insert/Update起作用,尝试将使用中的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
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。然后,您只需在消息末尾执行此操作,它将根据httpACCEPT
头自动序列化:
[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);
}