2016-02-23 35 views
0

我有這個問題與錯誤超時,總是當它假設從數據庫中獲取數據它反彈錯誤。我想使用此代碼從數據庫中檢索視頻:MVC DataReader超時錯誤

Repository.cs

public List<videoTble> Video() 
{ 
     var model = new List<videoTble>(); 

     string ConStr = "Data Source="";Connect Timeout=60"; 

     using (SqlConnection con = new SqlConnection(ConStr)) 
     { 
      string str = "SELECT * FROM videoTbles"; 
      con.Open(); 
      SqlCommand cmd = new SqlCommand(str, con); 
      cmd.CommandTimeout = 60; 
      SqlDataReader rd = cmd.ExecuteReader(); 

      while (rd.Read()) 
      { 
       var v = new videoTble(); 
       v.Name = rd["Name"].ToString(); 
       v.Data = (byte[])rd["Data"]; 
       v.ContentType = rd["ContentType"].ToString(); 
       v.ArtistName = rd["ArtistName"].ToString(); 
       v.Expirydate = (DateTime)rd["Expirydate"]; 

       model.Add(v); 
      } 
      con.Close(); 
     } 
     return model; 
    } 

Controller.cs

public ActionResult Download() 
{ 
     Repository res = new Repository(); 

     ViewBag.Video = res.Video(); 
     return View();   
} 

Model.cs

public partial class videoTble 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ContentType { get; set; } 
    public byte[] Data { get; set; } 
    public string ArtistName { get; set; } 
    public DateTime Expirydate { get; set; } 
} 

The timeout Error I got, when i run application

+0

你在videoTbles中有很多數據嗎? – user3509208

+0

嘗試從你的代碼中刪除這個,看看它是否有任何區別。 「cmd.CommandTimeout = 60;」 – user3509208

+0

刪除cmd.CommandTimeout = 60會使默認值爲30.它將超時甚至更快。如果你設置了cmd.CommandTimeout = 0,它將永遠等待。 – rgvassar

回答

0

它看起來像你在你的數據庫中存儲視頻作爲原始數據。我強烈建議不要這樣做。將視頻文件存儲在文件系統中,並將路徑存儲到數據庫中的視頻文件。