none
TransactionScope timeout RRS feed

  • Вопрос

  • Возникла следующая проблема. Есть код следующего вида

    using (var scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromMinutes(30))) { // Манипуляции с БД

    scope.Complete(); }

    По прошествии 10 минут транзакция успешно "падает" по таймауту, хотя
    а) задано в коде
    TimeSpan.FromMinutes(30)
    б) задано в web.confige
    <system.transactions>
        <defaultSettings timeout="00:30:00" />
      </system.transactions>
    в) задано в machine.confige
     <system.transactions>
        <machineSettings maxTimeout="01:00:00"/>
      </system.transactions>

    может быть еще где то надо установить, подскажите?


    22 апреля 2013 г. 14:00

Ответы

  • Работаю с EF, по этому SqlConnection не актуально. Локально проблема решилась изменением настройки в machine.config, который не в x64.
    Интересует, едиственный ли это способ установки таймаута транзакции более 10 минут?
    23 апреля 2013 г. 11:52
  •  Да, так как отдельные приложения могут задавать свой собственный максимальный тайм-аут, однако он всегда ограничен этим в файле machine.config до 10 минут по умолчанию.
    • Помечено в качестве ответа matyual 23 апреля 2013 г. 12:40
    23 апреля 2013 г. 12:31
    Модератор

Все ответы

  • Здравствуйте,

    Попробуйте таким образом:

    var transactionOptions = new TransactionOptions() 
    { 
        IsolationLevel = IsolationLevel.Serializable, 
        Timeout = TimeSpan.FromMinutes(30), 
    }; 
    using (var connection = new SqlConnection(ConnectionString)) 
    using (var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) 
    { 
        // Манипуляции с БД 
      
        scope.Complete(); 

    23 апреля 2013 г. 10:16
    Модератор
  • Работаю с EF, по этому SqlConnection не актуально. Локально проблема решилась изменением настройки в machine.config, который не в x64.
    Интересует, едиственный ли это способ установки таймаута транзакции более 10 минут?
    23 апреля 2013 г. 11:52
  •  Да, так как отдельные приложения могут задавать свой собственный максимальный тайм-аут, однако он всегда ограничен этим в файле machine.config до 10 минут по умолчанию.
    • Помечено в качестве ответа matyual 23 апреля 2013 г. 12:40
    23 апреля 2013 г. 12:31
    Модератор