Веб-API для подключения к SQL Server и возврата ответа в формате JSON - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать веб-API, который запрашивает SQL Server и возвращает ответ в формате JSON.Ниже я пытаюсь

 [HttpGet]
    public HttpResponseMessage Getdetails(string ROOM)
    {
        if (string.IsNullOrEmpty(ROOM))
        {
            return Request.CreateResponse(new { error = "Input paramete cannot be Empty or NULL" });
        }

       string commandText = "SELECT * from [TDB].[dbo].[results_vw] where ROOM = @ROOM_Data";
        string connStr = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
        var jsonResult = new StringBuilder();
        using (SqlConnection connection = new SqlConnection(connStr))
        {
            SqlCommand command = new SqlCommand(commandText, connection);
            command.Parameters.Add("@ROOM_Data", SqlDbType.VarChar);
            command.Parameters["@ROOM_Data"].Value = ROOM;
            connection.Open();
            var reader = command.ExecuteReader();
            if (!reader.HasRows)
            {
                jsonResult.Append("[]");
            }
            else
            {
                while (reader.Read())
                {
                    jsonResult.Append(reader.GetValue(0).ToString());
                }
            }
            var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
            response.Content = new StringContent(jsonResult.ToString());
            return ResponseMessage(response);
        }

Но похоже, что возвращаемый тип ResponseMessage не соответствует HttpResponseMessage, как я могу подключиться к SQL-серверу и вернуть ответ на запрос в формате JSON.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать

return Request.CreateResponse(jsonResult.ToString());

, который создает объект HttpResponseMessage с 200 (OK) кодом статуса Http + предоставленный объект данных в качестве содержимого.

0 голосов
/ 10 октября 2018

ResponseMessage возвращает IHttpActionResult производное ResponseMessageResult,

ResponseMessageResult ResponseMessage(HttpResponseMessage response);

, поэтому либо обновите функцию результата соответственно

 public IHttpActionResult Getdetails(string ROOM)

, либо не используйте ResponseMessage

return response;
...