この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19035|答える: 0

[解決済み] . .NET MySQL コネクタの競合 DbProviderFactories(.NET MySQL コネクタの競合 DbP...

[リンクをコピー]
2020年11月11日 09:11:52に投稿 | | |
この投稿はQWERTYUによって2020年11月11日09:14に最終編集されました。

シナリオ:
mysqlデータベースを使って.NETプロジェクトを開き、ローカルの開発環境にインストールします.NET MySQLコネクタは正常に動作していますが、iisにリリースされるとプログラムが異常で、エラーメッセージは以下の通りです。
例外情報:
System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>例外情報b__0--->:固定名「MySql.Data.MySqlClient」の ADO.NET プロバイダーはコンピュータやアプリケーションプロファイルに登録されておらず、読み込みもできません。 詳細については「内部例外」を参照してください。
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
問題の特定:
サーバーがインストールされていないことがわかりました.NET MySQLコネクターは、MySQLがAlibaba Cloudのクラウドデータベースを使用しているため、各サーバーへのインストールを避けるために複数のサーバーも存在します.NET MySQL コネクター、そのために、MySQLの参照を「ローカルコピー」に設定し、binフォルダにコピーし、app.configに以下を追加できるようにしました。
上記の設定を追加した後はサーバー上で問題なく動作し、MySQLコネクタをサーバーにインストールせずにアプリケーションを展開できるようになりましたが、ローカルの開発マシン(MySQLコネクタを装着した状態で)で問題が発生し、EF接続を試みると以下のエラーが出ます:
例外情報:
System.Data.Entity.Infrastructure.DependencyResolution.DefaultProviderFactoryResolver. <GetService>例外情報b__0--->:固定名「MySql.Data.MySqlClient」の ADO.NET プロバイダーはコンピュータやアプリケーションプロファイルに登録されておらず、読み込みもできません。 詳細については「内部例外」を参照してください。
InnerException:System.ArgumentException: 找不到请求的 .Net Framework Data Provider。可能没有安装。
アクションを試してみてください:
設定で上に追加されたXMLをコメントアウトすると、エラーは消えます。 これは同じドライバーがシステムにインストールされており、machine.configに位置しているためかもしれません。
最終的な解決策とその理由:
webconfigに <remove invariant="MySql.Data.MySqlClient" />を追加してみてください。 あなたのマシンにはすでにMySQLコネクターがインストールされており、DbProviderFactoriesでmachine.configを追加して修正します。 つまり、web.configに別のMySQLデータプロバイダーを入れると、同じものを二度登録しようとしたようなものです。











先の:C#はプロービングを通じてリファレンスライブラリのDLLをサブフォルダに配置します
次に:ASP.NET コアリンクトレーシング(3) SkyAPMはConsul動的構成に基づいています
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com