Недавно я написал веб-часть SharePoint на C #, которая извлекает информацию из базы данных SQL с помощью некоторых параметризованных запросов на основе выбора пользователя. Это включает в себя список клиентов в раскрывающемся списке, который заполняется из устройства чтения данных, например:
while (dr.Read())
{
string customerNameAndCity = dr.GetSqlString(1).Value + " - " +
dr.GetSqlString(2).Value;
customers.Items.Add(new ListItem(customerNameAndCity, dr.GetSqlString(0).ToString()));
}
По сути, это считывает имя и город каждого клиента и объединяет выходные данные в строку, которая добавляется в коллекцию элементов в раскрывающемся списке (называемую «клиенты»). Используемая команда SQL:
SELECT fldCustomer_ID, fldCustomerName, fldCity
FROM dbo.tblCustomers
WHERE fldActive = 'True'
ORDER BY fldCustomerName
Очевидно, что есть столбец с именем "fldActive", и когда для этого поля установлено значение "True", он позволяет этому коду кода добавить этого клиента в этот выпадающий список.
У меня до сих пор не было проблем с этим. Тем не менее, сегодня утром я установил для столбца fldActive тестового клиента значение True, чтобы протестировать некоторые новые сохраненные процедуры и попытаться просмотреть информацию этого клиента. Неудачно. Информация о клиенте не отображается в моем выпадающем списке. Затем я сделал iisreset и сбросил базу данных (SQL Server 2005). Все еще не повезло. Поэтому я открыл исходный код и пошагово описал метод, который заполняет этот выпадающий список. Проходя по нему, я вижу, что данные тестового клиента фактически загружены, текст объединяется, и Items.Add завершается без исключения. После завершения цикла я проверил выпадающий список клиентов, и запись фактически была там. Однако, как только страница загрузилась, у меня возникла та же проблема: появились все записи; тестового покупателя просто не было. Там не было пустой записи или что-нибудь; это было просто, как будто это никогда не населялось.
Единственное, о чем я могу думать, это о том, что где-то происходит кеширование, но я просто не знаю, почему это происходит. Я также очистил кеш IE и предположил, что между этим и перезапуском iisreset и базы данных я буду застрахован. Заранее благодарим за любую помощь, которую вы можете оказать.
РЕДАКТИРОВАТЬ: Я только что сделал полный перезапуск сервера, и теперь информация отображается правильно. Очевидно, что для правильного отображения необходимо перезапустить отдельный компонент. У кого-нибудь есть идеи относительно того, что это может быть? Очевидно, это не база данных или IIS, и я не хочу перезапускать весь сервер каждый раз, когда изменяются данные.
РЕДАКТИРОВАТЬ: у меня только что была эта проблема снова. На этот раз я изменил инструкцию SELECT, добавив одно поле, изменил инструкцию ORDER BY, обновил веб-часть на сервере и запустил ее. ORDER BY был соблюден, но новое поле не отображается. Sql Profiler показывает мне, что новый запрос SELECT находится в запросе, Fiddler показывает, что у запросов HTTP нет проблем, и я очистил кеш IE, но этот столбец просто не отображается на странице .aspx. На этот раз даже полный перезапуск сервера не помогает.