2012-10-09 4 views
5

"등록 된 .NET Framework 데이터 공급자를 찾지 못했거나로드하지 못했습니다."라는 오류가 발생했습니다. 그것은 단지, AppHarbor 서버에서 발생하지 내 로컬 등록 된 .Net Framework 데이터 공급자를 찾지 못했거나로드하지 못했습니다.

나는 닷넷 mvc4와 MySQL을 사용

내가 참조하고 로컬 복사 = TRUE를 설정 MySql.Data, MySql.Data.Entity, MySql.Web을 추가했습니다. 어떤 도움이 정말 정말 감사합니다

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
    </configSections> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient"/> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
    </DbProviderFactories> 
    </system.data> 
    <connectionStrings> 
    <add name="fmcdatabaseEntities" connectionString="metadata=res://*/Models.FMCEntityDataModel.csdl|res://*/Models.FMCEntityDataModel.ssdl|res://*/Models.FMCEntityDataModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=****;uid=****;port=3306;database=****&quot;" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
    <appSettings> 
    <add key="webpages:Version" value="2.0.0.0"/> 
    <add key="webpages:Enabled" value="false"/> 
    <add key="PreserveLoginUrl" value="true"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    <add key="enableSimpleMembership" value="false"/> 
    <add key="autoFormsAuthentication" value="false"/> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    <httpRuntime targetFramework="4.5" /> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880"/> 
    </authentication> 
    <membership defaultProvider="CustomMembershipProvider"> 
     <providers> 
     <clear/> 
     <add name="CustomMembershipProvider" type="FindMyCrushServer.Controllers.ControllerHelpers.CustomMembershipProvider" connectionStringName="fmcdatabaseEntities" applicationName="FindMyCrushServer" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Clear"/> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="false"> 
     <providers> 
     <clear/> 
     <add name="CustomRoleProvider" type="FindMyCrushServer.Controllers.ControllerHelpers.CustomRoleProvider"/> 
     </providers> 
    </roleManager> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers"/> 
     <add namespace="System.Web.Mvc"/> 
     <add namespace="System.Web.Mvc.Ajax"/> 
     <add namespace="System.Web.Mvc.Html"/> 
     <add namespace="System.Web.Optimization"/> 
     <add namespace="System.Web.Routing"/> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
    </entityFramework> 
</configuration> 

: 나는 또한 AppHarbor

에 bin 폴더를 눌러이 내 Web.config의입니다. 미리 감사드립니다

답변

12

NuGet 패키지를 사용해 보셨습니까? http://nuget.org/packages/MySQL.Data.Entities

http://nuget.org/packages/MySql.Data

    • ... 그들은이 필요한 곳에 바로 비트 가고 있는지 확인해야합니다. NuGet package restore을 사용하면 패키지 내용을 AppHarbor로 푸시하지 않을 수 있습니다.

  • +0

    답변 해 주셔서 감사합니다. 나는 그것을 시험해 보겠습니다 – Dranix

    +0

    당신은 생명의 은인입니다. – Dranix

    +1

    하지만 "대답"은 제공하지 않습니다. 왜이게 효과가 있니? 이 솔루션은 프로덕션 서버에서 작동합니까? – SandRock

    4

    필자의 경우이 예외의 이유는 dll과 구성 항목 간의 differt 버전이라는 것을 알게되었습니다.

    그래서 실제로 dll이 (nuget 또는 다른 방법으로 설치되어있는) dll은 app.config 노드의 항목과 다릅니다. 이 섹션,하지의 app.config의 경우, 또한 DLL의 버전으로 항목에 버전을 변경

    Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config and nearby folders.

    에서 찾을 수 있습니다 문제를 해결했다.

    0

    덕분에, 나는 내 nuget는 내 프로젝트/bin에 필요한 DLL을 추가 나던의 Web.config의 DB 공급자 공장이 수정 나를 위해

    <system.data> 
        <DbProviderFactories> 
         <remove invariant="MySql.Data.MySqlClient" /> 
         <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
        </DbProviderFactories> 
    </system.data> 
    
    +0

    분명히 연결 문자열에 providerName = "MySql.Data.MySqlClient"가 포함되어야합니다. –

    1

    생각합니다. 따라서 패키지 폴더의 모든 누락 된 DLL을 bin 폴더에 복사하면이 문제가 해결됩니다.

    관련 문제