2017-01-05 2 views
1

EF 6 코드 기반 마이그레이션을 사용하고 있습니다. Configuration.cs Seed() 메서드에서 파일을 읽어 기본 데이터로 삽입하려고합니다. 나는 HostingEnvironment.MapPath() 아래와 같이 사용하고 :EF Configuration.cs 파일에서 파일 내용을 읽는 방법?

string _homeContent = System.IO.File.ReadAllText(HostingEnvironment.MapPath(@"~/Data/DefaultContents/Home.html")); 

을하지만 패키지 - 관리 콘솔에서 업데이트 데이터베이스 명령을 실행할 때 HostingEnvironment.MapPath가 null 값을 반환합니다.

러닝 시드 방법.

System.ArgumentNullException : 값은 null 일 수 없습니다.

매개 변수 이름 : System.IO.File.ReadAllText (문자열 경로)에서 경로

친절 Configuration.cs 씨() 메소드에서 실제 파일을 읽는 방법을 조언한다.

답변

1

혼자서 대답해도됩니다.

HttpContext 개체가 아직 준비되지 않았기 때문에 Server.MapPath 및 HostingEnvironment.MapPath를 사용할 수 없습니다.

해당 AppDomain.CurrentDomain.BaseDirectory 복귀 ".. \ 프로젝트 디렉토리 \ bin에"

일예 C : \ YourSolutionDirectory \ YourProjectDirectory 빈

\ 그러나 우리는 그 Path.Combine()를 사용 방법 얻을 정확한 파일 경로, 그래서 ""폴더에서 이동해야합니다.

string homeFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", @"Data\DefaultContents\Home.html"); 

는 결과 : C : \ YourSolutionDirectory \ YourProjectDirectory은 데이터 \ DefaultContents \ home.html을

+1

좋은 솔루션 \이 나를 위해 그것을 해결. –

관련 문제