2010-07-18 5 views
0

내 ASP.NET MVC 프로젝트에서 특정 파일을 가져와야합니다. 같은 프로젝트에 두 개의 폴더가 있다고 가정 해 봅시다.Environment.CurrentDirectory가 잘못된 경로를 렌더링합니다.

내 Main에서 내 Reference.csproj 파일에서 클래스를 호출합니다. 거기에서 참조 폴더에있는 TargetFile에 도착해야합니다.

을 사용하고자 할 때 을 사용하면 C:\Project\Main이됩니다.

그래서 나는 Environment.CurrentDirectory을 사용할 수 있다고 생각했는데, 그것은 나를 대신 Reference 폴더로 안내 할 것이지만 불행하게도 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE을 출력한다. 나는 또한 Directory.GetCurrentDirectory()을 시도했지만, 나는 같은 결과를 얻는다.

내가 필요한 것은 Environment.CurrentDirectory이 내게주는 것이다 C:\Project\Reference. 내게 참조 내에서 참조되고 있기 때문에 그것이 내 프로젝트 폴더 근처에 가지 않고 있기 때문에 그것은 메인 폴더 대신 참조 폴더를 주어야한다고 생각합니다.

다른 곳에서 내 디렉토리를 정의하지 않고도 그렇게 할 수 있습니까? 내 프로젝트에 내 파일 경로를 하드 코딩하지 않고이 작업을 수행하려고합니다.

답변

3

ASP.NET 응용 프로그램 (또는 그 문제에 대한 ASP.NET MVC)의 일부인 파일을 찾는 일반적인 방법은 Server.MapPath("~/folder/somefile.txt")을 사용하는 것입니다.이 파일은 ~이 자동으로 절대 경로로 변환됩니다. 웹 사이트. ASP.NET 응용 프로그램에서 참조하는 어셈블리가 무엇이든 관계없이 모두 bin 폴더에서 참조됩니다.

+0

내 응용 프로그램이 Server.MapPath를 사용하지 않는 것 같습니다. 수업에 추가해야하는 문장이 있습니까? – Charmander

+0

App_Start()처럼 Server.MapPath를 항상 사용할 수 없습니다. –

+2

예, 사용할 수 없습니다. 이러한 상황에서 ['HostingEnvironment.MapPath'] (http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.mappath.aspx)를 사용할 수 있습니다. –

관련 문제