この投稿は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データプロバイダーを入れると、同じものを二度登録しようとしたようなものです。
|