Тайм-аут для SqlDataSource - PullRequest
       9

Тайм-аут для SqlDataSource

0 голосов
/ 07 сентября 2018

Я поддерживаю приложение C # в VS 2010, которое я унаследовал, и застрял с проблемой тайм-аута.

Вызывается хранимая процедура, выполнение которой теперь занимает намного больше времени, и выдает следующую ошибку:

Не удалось получить данные записи: истекло время ожидания. Период ожидания истек до завершения операции или сервер не отвечает.

Используемый SqlDataSource создается непосредственно в коде, и я не знаю, как установить свойство CommandTimeout, так как оно кажется недоступным. Это правда? Если нет, то как я могу получить доступ к этому свойству?

Решения, которые я видел, имеют SqlDataSource в файле .aspx, и обычно CommandTimeout устанавливается в событии управления (например: gridview). Это не тот случай.

EDIT:

Какой-то код

Results = new SqlDataSource();

Results.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["EM"].ConnectionString;

Results.SelectCommandType = SqlDataSourceCommandType.Text;

Results.SelectCommand = "exec sproc";

DataView ReturnedDataSet = (DataView)Results.Select(new 
System.Web.UI.DataSourceSelectArguments());

Спасибо.

1 Ответ

0 голосов
/ 07 сентября 2018

Хотя я настоятельно советую вам отойти (запустить!) От SqlDataSource, вы можете установить тайм-аут команды из C #. Есть событие, к которому вы можете подключить обработчик события, это выставляет DbCommand, где вы можете установить время ожидания .

var ds = new SqlDataSource("connectionString", "select * from dbo.Project_Master");
ds.Selecting += (object s, SqlDataSourceSelectingEventArgs e) => e.Command.CommandTimeout = 1000;
var dataView = (DataView)ds.Select(new DataSourceSelectArguments());
...