Member 14920537 Ответов: 1

При щелчке по пути изображение не открывается изображение


[WebMethod]
public void readOneModelImage(string id)
{
    try
    {
        String strJson;
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myCS"].ConnectionString);
        string strSQL = "select * from PosData2018New.dbo.Client_Define where client_no = '" + id + "'";
        conn.Open();
        SqlCommand cmd = new SqlCommand(strSQL, conn);
        
        DataTable dt = new DataTable();
        dt.Load(cmd.ExecuteReader());
        conn.Close();
        
        OneModelImage[] m = new OneModelImage[dt.Rows.Count];
        int counter = 0;
        foreach (DataRow row in dt.Rows)
        {
            m[counter] = new OneModelImage();
            m[counter].MoNo = row.Field<string>("mod_no");
            m[counter].Mona = row.Field<string>("mod_name");
            m[counter].ImageUrl = row.Field<string>("ModelImage");
            var xx = row.Field<string>("ModelImage");
        
                counter++;
        }
        
        strJson = serializer.Serialize(m);
        Context.Response.ContentType = "application/json";
        Context.Response.ContentEncoding = Encoding.UTF8;
        Context.Response.Write(strJson);
    }
 

    catch (Exception ex)
    {
    }
}


Что я уже пробовал:

нет решить и не может открыть новую форму

Sandeep Mewara

Непонятно, что ты пытаешься сделать. Ваш код извлекает данные из БД, но в вашем вопросе говорится, что изображение щелчка не открывается.

F-ES Sitecore

Удалите блок "catch", он просто скрывает любые исключения, которые выбрасываются. Используйте отладчик, чтобы проверить, что созданный json-это то, что вы ожидаете, и если это так, проверьте, как вы используете этот json в клиентском браузере.

1 Ответов

Рейтинг:
1

OriginalGriff

Во-первых, не делай этого так! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?
И в веб-приложении ... это действительно не очень хорошая идея.

Остальная часть вашей проблемы, о которой вам придется подумать, - это то, что код получает данные (плохо) из БД, но этот код даже не пытается использовать изображения или формы, так что весь ваш вопрос бессмыслен.