SQL-запрос в SSMS работает, но не в C # - PullRequest
2 голосов
/ 20 сентября 2019

У меня есть этот запрос, который возвращает изображение, хранящееся в базе данных MS SQL.Если я запускаю его в SSMS (SQL Management Studio), он работает отлично и мгновенно возвращается.

select image from extra where product_id = 184

Однако в .NET Core MVC он не возвращается, а команда SQL просто отключается и выдает ошибку 500происходит с указанием времени ожидания команды SQL.Я даже дал ему 10 полных минут, чтобы «вернуть» команду SQL, а она по-прежнему не работает.

[HttpGet("{id}/image")]
public object Get(int id)
{
    using (SqlConnection connection = new SqlConnection(connectionstring)) {
        using (SqlCommand sqlCommand = new SqlCommand("select top 1 image from extra where product_id = @product_id", connection))
        {
            sqlCommand.Parameters.AddWithValue("@product_id", id);
            sqlCommand.Connection.Open();
            using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
            {
                object img = null;

                if (sqlDataReader.HasRows)
                {
                    sqlDataReader.Read();
                    img = new
                    {
                        image = sqlDataReader["image"] == DBNull.Value ? null : "data:image/png;base64," + Convert.ToBase64String((byte[])sqlDataReader["image"])
                    };

                    return img;
                }
            }
        }
    }

    return new { error = true, message = "Unknown error in image getting" };
}

Переход по коду в режиме отладки.Эта строка не проходит:

SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

Этот pastebin - это то, что возвращает запрос SQL, если я запускаю его в SSMS.

РЕДАКТИРОВАТЬ: версия SQLMicrosoft SQL Server 2017 (RTM-CU15-GDR) (KB4505225) - 14.0.3192.2 (X64) Jun 15 2019 00:45:05 Copyright (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)

1 Ответ

0 голосов
/ 20 сентября 2019

Пожалуйста, попробуйте ниже.

Также установите точку останова на Catch и посмотрите, что ex.Message означает

try
            {
                SqlCommand sqlCommand = new SqlCommand("select top 1 image from extra where product_id = @product_id", connection);
                sqlCommand.Parameters.Add(new SqlParameter("@product_id", id));
                using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
                {
                    while (sqlDataReader.Read())
                    {
                        img = new
                        {
                            image = sqlDataReader["image"] == DBNull.Value ? null : "data:image/png;base64," + Convert.ToBase64String((byte[])sqlDataReader["image"])
                        };
                        connection.Close();
                        return img;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return new { error = true, message = "Unknown error in image getting" };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...