我创建了 3 个 Ajax 进程来同时运行以下代码。
但其中一个进程抛出消息所示的异常“底层提供商在 Open 上失败。”
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)进程中的 1 个,有时,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" />
任何人都知道解决方案或我可以尝试的东西,请告诉我。
Thanks
这听起来像是一个问题,因为使用相同的用户名与 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.
} }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)