WCFプロジェクトをサーバーに公開しました。また、WCFサービスを使用する同じボックスにMVCアプリケーションを公開しました。
MVCアプリケーションでログインしようとすると、これはwcfサービスを使用しますが、ブラウザーでこの例外が発生します。
エンティティフレームワークプロバイダータイプ 'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer'は、不変名「System.Data.SqlClient」のADO.NETプロバイダーのアプリケーション構成ファイルに登録できませんでした。アセンブリ修飾名が使用されていること、および実行中のアプリケーションがアセンブリを使用できることを確認してください。
これはエンティティフレームワークの例外ですが、サービスプロジェクトを展開した後、私のプロジェクトは既に開発環境でEFを参照しているため、DLLにもEF参照が含まれているはずですが、このエラーが発生する理由はわかりません。
このメッセージは、includeExceptionDetailInFaults="True"
@FranciscoGoldenstein言って!コンソールアプリケーションなどにEntity Frameworkをインストールする必要はありません。AssemblyEntityFramework.SqlServer.dllへの参照を追加するだけです。 Entity Frameworkを使用するクラスライブラリプロジェクトからこのアセンブリをLIBフォルダーにコピーし、参照を追加できます。
要約すれば:
それは私のための仕事です!役に立てば幸いです。
また、このリンクを試してみてください Entity Framework Providerタイプをロードできませんでした?
この問題を解決する最も簡単なトリックは、EFプロジェクトのクラスの1つに次の行を追加することです。
public class Blablabla
{
private static string __hack = typeof(SqlProviderServices).ToString();
// other class members as they were before.
}
これにより、ビルドプロセスがEntityFramework.SqlServer.dllをEFプロジェクトへの参照を持つプロジェクトの\bin
フォルダーに強制的にコピーします。
ダウンストリームプロジェクトでEF nugetパッケージをインストールしたり、EntityFramework.SqlServer.dllへの明示的な参照を作成する必要はありません。
Entity Framework nugetをアンインストールして、再インストールするだけでうまくいきました。
別の同様の質問に対する私の答え で提案したように、binフォルダーを削除し、ソリューションをクリーン/リビルドします。