이 게시물은 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 데이터 제공자를 넣으면, 마치 같은 것을 두 번 등록하려고 시도한 것과 같습니다.
|