ASP.NET 5 / Azure 오류 : FileNotFoundException : 파일을로드 할 수 없거나 System.Data.SqlClient 어셈블리를로드 할 수 없습니다.

asp.net-core azure entity-framework-core

문제

VS2015를 사용하여 Azure에 ASP.NET 5 응용 프로그램을 배포하고 있습니다. 성공적인 배포 및 브라우저에서 내 사이트를 열면 오류가 발생합니다.

FileNotFoundException: Could not load file or assembly 'System.Data.SqlClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 프로젝트에서 어셈블리가 직접 참조되지 않습니다. EntityFramework.MicrosoftSqlServer 어셈블리를 통한 간접 종속성입니다.

ASP.NET 4를 사용하여 비슷한 문제가 발생했습니다. 오류 : 'System.Data.SqlClient' 라는 이름을 가진 ADO.NET 공급자에 대해 Entity Framework 공급자를 찾을 수 없습니다. "끔찍한 해킹"이라는 솔루션이 저에게 효과적이었습니다. :)

문제의 원인과 해결 방법에 대한 아이디어가 있습니까?

내 웹 프로젝트 project.json의 내용은 다음과 같습니다.

{
    "userSecretsId": "aspnet5-MyProject.Web-<A guid goes here>",
    "version": "1.0.0-*",
    "compilationOptions": {
        "emitEntryPoint": true
    },

    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
        "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
        "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
        "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
        "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
        "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
        "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
        "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
        "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
        "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
        "Microsoft.Framework.CommandLineUtils.Sources": "1.0.0-beta5",
        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
        "MyProject.Data": "1.0.0-*",
        "System.Data.SqlClient": "4.0.0-beta-23516" <-- I've tried with this explicit dependency here
     },

     "commands": {
        "web": "Microsoft.AspNet.Server.Kestrel",
        "ef": "EntityFramework.Commands"
     },

     "frameworks": {
         "dnxcore50": { }
     },

     "exclude": [
        "wwwroot",
        "node_modules"
     ],
     "publishExclude": [
         "**.user",
         "**.vspscc"
     ],
     "scripts": {
        "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
      }
}

그리고 MyProject.Web이 의존하는 MyProject.Data 프로젝트의 project.json :

{
    "userSecretsId": "aspnet5-MyProject.Web-<A guid goes here>",
    "version": "1.0.0-*",
    "compilationOptions": {
        "emitEntryPoint": true
    },

    "dependencies": {
        "EntityFramework.Commands": "7.0.0-rc1-final",
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
        "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
        "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
        "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
        "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
        "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
        "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
        "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
        "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
        "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
        "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
        "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
        "Microsoft.Framework.CommandLineUtils.Sources": "1.0.0-beta5",
        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
        "MyProject.Data": "1.0.0-*",
        "System.Data.SqlClient": "4.0.0-beta-23516" <-- I've tried with this explicit dependency here
     },

     "commands": {
        "web": "Microsoft.AspNet.Server.Kestrel",
        "ef": "EntityFramework.Commands"
     },

     "frameworks": {
         "dnxcore50": { }
     },

     "exclude": [
        "wwwroot",
        "node_modules"
     ],
     "publishExclude": [
         "**.user",
         "**.vspscc"
     ],
     "scripts": {
        "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
      }
}

내 project.json 파일에서 볼 수있는 것처럼 명시 적으로 누락 된 종속성을 지정하여 시도했습니다. "System.Data.SqlClient"패키지가 "4.0.0-beta-23516"이 [approot] \ packages 폴더에 있음을 확인할 수 있습니다. 내 로컬 컴퓨터에서 패키지 폴더가 정확하게 보입니다. 이전 deplyments로 인해 발생하는 것을 피하기 위해 새로 만든 Web App에서 배포를 시도했습니다. 오류는 여전히 동일합니다.

인기 답변

드디어 config.json dependenciesframeworksconfig.json 줄을 사용하여 IIS에서 작업하는 배포를 얻을 수있었습니다.

"dependencies": {
    "Microsoft.NETCore.Platforms": "1.0.1-beta-23516",
    "Microsoft.NETCore.Targets.DNXCore": "5.0.0-beta-23516",
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
    "Microsoft.AspNet.Hosting": "1.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.Session": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final",
    "System.Runtime.Serialization.Primitives": "4.1.0-beta-23516",
    "System.Data.Common": "4.0.1-beta-23516"
  },
  "frameworks": {
    "dnxcore50": {
      "dependencies": {
        "System.Data.SqlClient": "4.0.0-beta-23109",
        "System.Data.SqlClient.sni-x64": "4.0.0-beta-23019",
        "runtime.win7-x64.System.Data.SqlClient.sni": "4.0.0-beta-23516"
      } }
  }

IIRC에서 중요한 라인 dependencies 있다 "Microsoft.NETCore.Platforms": "1.0.1-beta-23516""System.Data.Common": "4.0.1-beta-23516" . 그리고 frameworks 컨테이너의 모든 것.

그런 다음 게시 된 디렉토리 wwwroot, approot 및 log를 IIS 웹 사이트가있는 위치로 복사하십시오. IIS에서 웹 사이트를 wwwroot 디렉토리로 지정하십시오.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.