2013-07-05 2 views
2

У меня есть вопрос: как бороться с временем работы в asp.net MVC странице. При загрузке страницы, запрашивающей базу данных SQL Server, она загружает продукты. И когда-то он говорит, что время ожидания ожидания. Как с этим бороться.Подождите время ожидания работы mvc

+0

отзыва код .. Проверьте ваш SQL запросы, сколько процессора он принимает и ресурсы .. –

ответ

4

Во избежание исключения времени ожидания ожидания при запуске очень длинных запросов измените свойства команды SQL и дайте команде подождать дольше, прежде чем вызывать таймаут.

using System; 
using System.Data.SqlClient; 
/// 
public class A { 
    /// 
    public static void Main() { 
    string connectionString = ""; 
    // Wait for 5 second delay in the command 
    string queryString = "waitfor delay '00:00:05'"; 
    using (SqlConnection connection = new SqlConnection(connectionString)) { 
     connection.Open(); 
     SqlCommand command = new SqlCommand(queryString, connection); 
     // Setting command timeout to 1 second 
     command.CommandTimeout = 1; 
      try { 
       command.ExecuteNonQuery(); 
       } 
      catch (SqlException e) { 
       Console.WriteLine("Got expected SqlException due to command timeout "); 
       Console.WriteLine(e); 
     } 
    } 
} 

}

Выполнение Linq для SQL запроса может занять больше времени & превышать значение по умолчанию CommandTimeout имущества класса DataContext в. Значение по умолчанию - 30 секунд. Мы можем установить значение CommandTimeout перед каждым созданием объекта DataContext LINQ to SQL и вызывать запрос.

#region Constructors 

    /// <summary> 
    /// Initializes a new FrameworkEntities object using the connection string found in the 'FrameworkEntities' section of the application configuration file. 
    /// </summary> 
    public FrameworkEntities() : base("name=FrameworkEntities", "FrameworkEntities") 
    { 
     this.ContextOptions.LazyLoadingEnabled = true; 
     this.CommandTimeout = 300; 
     OnContextCreated(); 
    } 

    /// <summary> 
    /// Initialize a new FrameworkEntities object. 
    /// </summary> 
    public FrameworkEntities(string connectionString) : base(connectionString, "FrameworkEntities") 
    { 
     this.ContextOptions.LazyLoadingEnabled = true; 
     this.CommandTimeout = 300; 
     OnContextCreated(); 
    } 

    /// <summary> 
    /// Initialize a new FrameworkEntities object. 
    /// </summary> 
    public FrameworkEntities(EntityConnection connection) : base(connection, "FrameworkEntities") 
    { 
     this.ContextOptions.LazyLoadingEnabled = true; 
     this.CommandTimeout = 300; 
     OnContextCreated(); 
    } 

    #endregion 
+0

'command.CommandTimeout = 0;' будут бесконечными? –

+0

Zero - это бесконечный тайм-аут. Если ответ от экземпляра SQL SERVER разбит на несколько сетевых пакетов, соединение будет неправильно настроено и будет происходить общая ошибка сети. – AnandMohanAwasthi

+0

Я не мог найти такую ​​документацию нигде. спасибо. –