2016-10-28 2 views
0

주최 IIS 웹 서비스에서 파일을 액세스하는 방법 나는 wwwroot에 디렉토리에 그런 식으로있는 파일 엽니 다내 IIS 응용 프로그램에서 ServiceHost를

File.ReadAllText("ConfigFile.json"); 

IISExpress이 C:\Program Files (x86)\IIS Express\ConfigFile.json

에서 파일을 열려고을 나는 wwwroot 디렉토리가 작업 디렉토리라고 생각했지만 분명히 그렇지 않다.

Log4net 로그 파일은 작업 디렉토리와 구성 관리자 파일에 상대적으로 기록됩니다. 그래서 System.IO.File 파일을 여는 이유를 모르겠습니다. C:\Program Files (x86)\IIS Express을 작업 디렉토리로 사용합니다.

이 문제를 해결하는 가장 좋은 해결책은 무엇입니까? 나는 현재 정의 된 작업 디렉토리를 만질 필요가 없다고 생각한다.

+2

File.ReadAllText (Server.MapPath ("ConfigFile.json"))' – VDWWD

답변

0

하여 ServiceHost 클래스에 의해 호스팅되는 IIS WCF 서비스에서 모자 작품입니다 :

AppDomain.CurrentDomain.BaseDirectory + "/ConfigFile.json" 

그것은 내 IIS 익스프레스 환경 및 배포 IIS 환경에서 유효 전체 절대 경로를 제공합니다.

0

당신은 ApplicationBasePath 속성 값에 액세스 할 수 있도록 클래스에 IHostingEnvironment를 주입해야합니다

한다고 가정 IHostingEnvironment 유형은 함수가 다음 Read 이름이 같은 env은 다음

File.ReadAllText(env.WebRootPath + "/ConfigFile.json"); 

을 사용할 수 있습니다 당신 사용할 수 있습니다

public void Read(IHostingEnvironment env) 
{ 
    File.ReadAllText(env.WebRootPath + "/ConfigFile.json"); 
} 
+0

을 사용하십시오. IHostingEnvironment는 asp.net 컨트롤러에 삽입 할 수 있지만 읽을 수는 없지만 asp.net 컨트롤러가 없습니다. 단지 WCF 웹 서비스. IHostingEnvironment 인스턴스를 얻으려면 어떻게해야합니까? – abreneliere