이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 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