Ваша первая проблема связана с обработкой ошибок, невозможно узнать, что это за ошибка, потому что вы ее маскируете.
У вас есть несколько вариантов, но вам нужно определить ошибку (я определил ее как e):
Вариант 1. Запишите его в свое сообщение (не следует делать это в рабочей среде, поскольку это предоставит клиенту (потенциальному хакеру) слишком много информации о вашей инфраструктуре, но это только начало).
Вариант 2. Бросьте исключение, пусть IIS решит, что делать. В режиме DEV установите атрибут customErrors в вашем конфигурационном файле:
<customErrors mode="RemoteOnly"></customErrors>
Вариант 3 - дать дружеское сообщение, но записать информацию либо на сервер (файл) или базу данных Однако этот код будет отличаться в зависимости от того, как вы его реализуете.
В любом случае вам НУЖНО знать, в чем заключается ошибка, иначе вы не сможете ее исправить. Для простоты у меня есть обновление кода, относящееся к # 2, но в процессе работы вы действительно должны в конечном итоге использовать # 3.
catch (Exception e)
{
throw e;
}
Кроме того, у вас есть проблема внедрения SQL, которую необходимо исправить с помощью параметров SQL. Вот несколько сообщений на эту тему:
- Что такое SQL-инъекция?
- Как можно предотвратить внедрение SQL-кода?