0

以下のコードを同時に実行するために、3つのAjaxプロセスを作成しました。しかし、プロセスの1つは、 「基になるプロバイダーが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呼び出しを実行すると、通過します。

1 of 3(Ajax)プロセス、場合によっては2of5プロセスに発生します。

すべてのプロセスがデータベースを同時に使用しようとしているためだと思います。しかし、私は解決策を見つけることができませんでした。

これは私の接続文字列です、

<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" />

誰もが解決策や私が試すことができる何かを知っています、私にアドバイスしてください。

ありがとう

4

2 に答える 2

0

問題があるかどうかはわかりませんが、プロバイダー名はそうではMysql.Data.MySqlClientありませんMySql.Data.MySqlClient(大文字と小文字が区別される場合は、これが原因である可能性があります)。

于 2014-07-06T18:35:03.990 に答える
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.
    } }
于 2012-09-18T23:32:08.367 に答える