2012-09-18 73 views
0

我做了3個Ajax進程來同時運行下面的代碼。 但其中一個進程拋出異常,消息說「底層提供程序在打開時失敗。」底層提供程序在打開時失敗

try{ 
    orderRepository orderRepo = new orderRepository(); // get context (Mysql) 

    var result = (from x in orderRepo.orders 
      where x.orderid == orderno 
      select new {x.tracking, x.status, x.charged }).SingleOrDefault(); 

    charged = result.charged; 
}catch(Exception e){ 
    log.Error(e.Message); // The underlying provider failed on Open. 
} 

而且,我運行1 Ajax調用之前失敗,那麼它通過。

它發生在3個(Ajax)進程中的一個,有時候是5個進程中的2個。

我想這是因爲所有進程都嘗試在同一時間使用數據庫。但我找不到解決方案。

這是我的連接字符串,

<add name="EFMysqlContext" connectionString="server=10.0.0.10;User Id=root;pwd=xxxx;Persist Security Info=True;database=shop_db" providerName="Mysql.Data.MySqlClient" /> 

任何人都知道解決方案或東西我可以試試,請告訴我。

謝謝

回答

0

這聽起來像是一個問題,因爲與使用相同用戶名的SQL Server併發連接。您是否在使用後嘗試銷燬/處理存儲庫(或連接)對象? 試試看:

try{ 
     using(orderRepository orderRepo = new orderRepository()) // get context (Mysql) 
     { 
      var result = (from x in orderRepo.orders 
       where x.orderid == orderno 
       select new {x.tracking, x.status, x.charged }).SingleOrDefault(); 

     charged = result.charged; 
    } // orderRepo object automatically gets disposed here 
catch(Exception e){ 
     log.Error(e.Message); // The underlying provider failed on Open. 
    } } 
0

不知道它很重要,但是你的提供程序名稱Mysql.Data.MySqlClient而不是MySql.Data.MySqlClient(如果是大小寫敏感的,這可能是原因)。

相關問題