2011-07-06 2 views
6

전자 메일이라는 하위 폴더가있는 ASP.NET MVC 프로젝트가 있습니다. 여기에는 내 이메일 템플릿을위한 HTM 파일이 들어 있습니다. 사이트의 특정 지점에서 이러한 템플릿 중 하나를로드하고 전자 메일로 보내야하는 컨트롤러가 있습니다.파일 시스템에서 ASP.NET MVC 사이트의 경로 가져 오기

내가하려는 것은 현재 실행중인 어셈블리의 경로를 가져 오기 위해 리플렉션을 사용하지만 예상대로 작동하지 않습니다. 경로는 내가 돌아 얻고있다 :

var directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

'C : \ Windows가 \ Microsoft.NET \ Framework64 \ v4.0.30319 임시 ASP.NET \는 \ SSL \ 1da130c4 \ f8e7810e \ 조립 \ DL3 \를 세틸 5f253aca \ 1a71f123_e83bcc01 \ 이메일은 \ ProductAccountConfirmation.htm를 '

나는 사이트로이 이상한 비주얼 스튜디오를 통해 IIS에서 호스팅되고있다 찾을 수 있습니다. 나는 이것이 내 프로젝트 폴더 인 dev에있는 dll 위치와 프로덕션 환경에있는 IIS 용 deploy 폴더를 줄 것이라고 생각했을 것이다.

답변

9

찾고있는 것은 Server.MapPath()이며, 실행중인 응용 프로그램의 경로를 제공합니다.

1

ASP.Net을 사용하면 복사본이 어셈블리로 만들어지며 런타임에 사용되는 복사본입니다. 프로젝트 폴더에있는 DLL은 템플릿 일뿐입니다.

어떤 목적으로이 디렉토리가 필요합니까? 당신의 목표를 성취 할 수있는 또 다른 방법이있을 수 있습니다.

1

당신은 당신의 응용 프로그램의 루트 경로를 얻을 수 있습니다 :

@HostingEnvironment.ApplicationPhysicalPath 
4

은 그래서 당신이 당신의 이메일 하위 폴더에 template1.html라는 파일이 있다고 가정 해 보자. 이 코드는 HTML 파일의 전체 경로를 제공해야합니다. 당신이 게시물에 응답하면

HttpContext.Current.Server.MapPath("/") + "\\emails\\template1.html"; 
3
AppDomain.CurrentDomain.BaseDirectory 
+0

는 설명이나 자세한 링크를 추가하십시오. – AFract

+0

IIS에서 하위 사이트 웹 사이트에 대해서도 완벽하게 작동합니다. –

관련 문제