1

我正在開發一個使用實體框架4.1的ASP.Net MVC 3 Web應用程序。我最近將應用程序上傳到我的測試服務器,並且我注意到ELMAH發送的錯誤電子郵件,其中說明了ASP.Net MVC 3 System.Data.SqlClient.SqlException超時過期

System.Data.SqlClient.SqlException超時已過期。操作完成之前經過的超時期限爲 或者服務器不是 響應。

下面顯示了我的一些代碼。

控制器

public ActionResult VerifyEmail(int uid, string vid) 
{ 
    var userList = _userService.VerifyEmail(uid,vid).ToList(); 
} 

服務

public IList<User> VerifyEmail(int uid, string emailvcode) 
{ 
    return _uow.User.Get(u => u.userID == uid && u.emailVerificationCode == emailvcode).ToList(); 
} 

工作單位

public class UnitOfWork : IUnitOfWork, IDisposable 
{ 
     readonly LocumEntities _context = new LocumEntities(); 

     private GenericRepository<User> _user = null; 

     public IGenericRepository<User> User 
     { 
      get 
      { 
       if (_user == null) 
       { 
        _user = new GenericRepository<User>(_context); 
       } 
       return _user; 
      } 

     } 

    } 

通用庫

public IList<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,string includeProperties = "") 
{ 
    IQueryable<TEntity> query = dbSet; 

    if (filter != null) 
    { 
     query = query.Where(filter); 
    } 

    foreach (var includeProperty in includeProperties.Split 
     (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) 
    { 
     query = query.Include(includeProperty); 
    } 

    if (orderBy != null) 
    { 
     return orderBy(query).ToList(); 
    } 
    else 
    { 
     return query.ToList(); 
    } 
} 

超時錯誤有時發生在服務方法中的行正試圖執行

return _uow.User.Get(u => u.userID == uid && u.emailVerificationCode == emailvcode).ToList(); 

此錯誤是不會發生的每一次,只是偶爾,但是,我不明白爲什麼這個查詢要麼返回一個用戶列表,要麼是一個NULL列表。

任何人都可以從我的代碼中發現爲什麼會發生這種情況?

任何反饋將不勝感激,因爲我不知道爲什麼會發生這種情況。

謝謝。

回答

0

嘗試增加連接字符串中的超時屬性。同時運行SQL Server Profiler來查看爲您的查詢生成了多少SQL,因爲查詢可能會返回導致超時的大量數據。