'마이크로소프트.SqlServer.Azure에서 Types 버전 10 이상을 찾을 수 없습니다.
ASP.NET MVC 4에서 webapi를 만들려고 합니다.webapi는 Entity Framework 5 Spatial types를 사용했고 저는 매우 간단한 코드를 작성했습니다.
public List<Area> GetAllAreas()
{
List<Area> aList = db.Areas.ToList();
return aList;
}
영역에 DbGeometry가 있습니다.
이 로컬을 실행하면 작동하지만 zure에 게시하면 다음 오류가 발생합니다.
어셈블리가 'Microsoft'이므로 이 공급자에 대해 공간 유형 및 함수를 사용할 수 없습니다.SqlServer.유형의 버전 10 이상을 찾을 수 없습니다.
이것을 해결하는 방법을 아는 사람? :)
감사합니다!
해결책을 찾았어요! 그냥 너겟 패키지 마이크로소프트를 설치하세요.SqlServer.종류들
PM > 설치 - Microsoft 패키지.SqlServer.종류들
위의 답변은 어셈블리의 버전 11(SQL Server 2012)을 사용할 수 있을 때 제대로 작동합니다.
제 솔루션이 동일한 어셈블리의 버전 13(SQL Server 2016)에 다른 종속성을 가지고 있기 때문에 문제가 있었습니다.이 경우 Entity Framework(v6.1.3 이상)는 SqlTypesAssemblyLoader(이 예외의 원본)에서 어셈블리의 버전 10 및 11만 찾도록 하드 코딩됩니다.
이 문제를 해결하기 위해 Entity Framework에 다음과 같이 사용할 어셈블리를 지정할 수 있습니다.
SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
어떤 이유에서인지 이 문제를 해결해 주는 바인딩 리디렉션이 누락되었습니다.
다음을 추가하면 문제가 해결됩니다.
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
이 문제를 해결하는 두 가지 방법이 있습니다.
- 서버 액세스 권한이 있는 경우 https://www.microsoft.com/en-us/download/details.aspx?id=29065 의 "Microsoft System CLR Types for SQL Server 2012"를 설치하거나 아래의 직접 링크를 사용하여 X86:http://go.microsoft.com/fwlink/ ?LinkID=239643&clcid=0x409 또는 X64에 직접 링크를 설치하십시오:http://go.microsoft.com/fwlink/ ?LinkID=239644&clcid=0x409
두 번째 방법은 NuGet 패키지 관리자를 사용하여 설치하는 것입니다.
Microsoft를 설치 - 패키지합니다.SqlServer.종류들
그런 다음 아래와 같이 플러그인 참고 사항을 따르십시오.
'System CLR Types for SQL Server'가 설치되지 않은 시스템에 공간 데이터 유형을 사용하는 애플리케이션을 배포하려면 네이티브 어셈블리 SqlServerSpatial 110.dll도 배포해야 합니다.이 어셈블리의 x86(32비트) 및 x64(64비트) 버전이 모두 SqlServerTypes\x86 및 SqlServerTypes\x64 하위 디렉터리 아래에서 프로젝트에 추가되었습니다.C++ 런타임이 설치되지 않은 경우 네이티브 어셈블리 msvcr100.dll도 포함됩니다.
현재 아키텍처에 따라 런타임에 올바른 어셈블리 중 하나를 로드하려면 코드를 추가해야 합니다.
ASP.NET 응용 프로그램 ASP.NET 응용 프로그램의 경우 Global.asax.cs 의 Application_Start 메서드에 다음 코드 줄을 추가합니다.
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
데스크톱 응용 프로그램 데스크톱 응용 프로그램의 경우 공간 작업을 수행하기 전에 실행할 다음 코드 줄을 추가합니다.
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
Web.config 파일에 "dependentAssembly"를 추가하십시오.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
이것은 나에게 효과가 있었습니다.
저도 이 문제에 직면했지만, 마이크로소프트사였습니다.SqlServer.유형 nuget 패키지가 이미 설치되어 있습니다.
제가 문제를 해결한 것은 솔루션 > 레퍼런스 > 시스템으로 가는 것이었습니다.Data.Entity > Properties > Copy Local을 True로 설정합니다.
참고: Microsoft용 로컬을 복사합니다.SqlServer.유형이 true로 이미 설정되어 있으며 시스템에 문제가 있음에도 불구하고Data.Entity, 오류 메시지는 여전히 Microsoft에 대한 것이었습니다.SqlServer.종류들.
솔루션은 Windows Azure 포럼에서 제공됩니다.
해결책은 .asax.cs 의.asax.cs 에 이 하는 것이었습니다.Application_Start()
:
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
행운을 빌어요, 형제들.
현재 게시물에 대한 답변에 대한 코멘트에 이어, 이 두 줄(기본 기능에 우선적으로 추가)을 추가하면 콘솔 앱에 대한 제 문제가 해결되었습니다.
SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
App했습니다.Application_Start
의 시대의Global.asax
java.
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";
누군가에게 도움이 되길 바랍니다.
위의 어떤 해결책도 효과가 없었습니다.
- SQL Server 기능 팩이 설치되어 있습니까?네.
- NuGet 패키지를 설치하시겠습니까?네.
- DLL이 GAC와 프로젝트 보관함에 있습니까?네.
이 오류는 서버의 리소스가 부족하기 때문일 수도 있습니다.SQL 서버를 다시 시작했더니 자동으로 해결되었습니다.
방금 같은 문제가 있었습니다.는 사용중을 하고 있습니다.EF6
름부를 부르는 것.SQL
공간 명령을 사용하는 SQL 함수를 가지고 있습니다.이것을 유닛 테스트를 통해 테스트해 보았는데 잘 작동했습니다.가 전화 때.Asp.Net
해결책 오류를 받았습니다.
어셈블리가 'Microsoft'이므로 이 공급자에 대해 공간 유형 및 함수를 사용할 수 없습니다.SqlServer.유형의 버전 10 이상을 찾을 수 없습니다.
를 으로써.NUGET
마이크로소프트.SqlServer. 및 형유및추가추SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
에▁Application_Start method
Global.asax.cs
모든 것이 잘 작동했습니다.
저의 경우, 구성이 좋지 않은 연결 문자열이 원인이었습니다.연결 문자열이 올바르게 구성되었는지 확인합니다.
Visual Studio 2017에 버그가 있기 때문에 이 중 하나도 작동하지 않았습니다.프로젝트 외부에 SQL 서버 유형의 두 폴더를 모두 생성하지만 global.asax에서는 인식되지 않습니다.
저는 프로젝트 외부의 폴더에서 프로젝트 내부로 끌어다 놓기만 하면 됩니다. 프로젝트가 글로벌하게 인식되고 작동하는 것보다 말입니다.
언급URL : https://stackoverflow.com/questions/13174197/microsoft-sqlserver-types-version-10-or-higher-could-not-be-found-on-azure
'programing' 카테고리의 다른 글
목표-C에서 메서드 오버로드? (0) | 2023.05.21 |
---|---|
Cygwin에 Pip-3.2 설치 (0) | 2023.05.21 |
장고 - 해당 테이블 없음: 주.auth_user__old (0) | 2023.05.21 |
SQL Server Management Studio 17에서 하나 이상의 구성 요소를 찾을 수 없습니다. (0) | 2023.05.21 |
정적 속성에 바인딩 (0) | 2023.05.21 |