2009-03-18 5 views
2

사용자가 파일을 업로드 할 수있는 웹 응용 프로그램이 있습니다. 파일은 IIS에서 외부 저장 장치에 매핑되는 가상 폴더에 실제로 저장됩니다. 업로드 된 각 파일에 대한 레코드가 데이터베이스에 저장됩니다. 데이터베이스 레코드에는 파일이 여전히 "활성"(사용자가 삭제하지 않음) 및 가상 폴더 경로 (예 :/storage1/test)에 대한 정보가 포함되어 있습니다.IIS 외부의 서버 경로 매핑

이제 저는 정기적으로 더 이상 "활성"상태가 아닌 모든 파일 목록을 검색하고이를 실제 저장소에서 삭제하는 IIS 외부의 관리 작업을 실행합니다. 관리 작업을 IIS 외부에서 예약 된 작업 또는 Windows 서비스로 실행하고 싶습니다. 그러나 데이터베이스 레코드에 저장된 가상 폴더 경로를 외부 프로세스의 실제 경로에 매핑하는 방법을 이해할 수 없습니다. 외부 프로세스 나 다른 스마트 방법으로 IIS를 "탭"할 수 있습니까? (또는 나는 잘못된 방향으로 모두 가고있다).

TIA /헨릭

답변

2

프로젝트에 System.Web에 대한 참조를 추가해야합니다.

string path = System.Web.HttpServerUtility.MapPath("/MyWebSite"); 
+0

허용되는 정답은 어떻게 0으로 줄어 듭니까? –

0

앱이하는 ASP.NET 응용 프로그램 인 경우,는 Server.MapPath 호출을 조사 할 수 - 당신은 주요 애플 리케이션과 같은 가상 디렉터리를 사용하는 경우.

그렇지 않으면 "기본 경로"(가상 디렉터리 경로에 해당)를 외부 응용 프로그램의 구성에 저장하고 해당 기본 경로와 파일 경로를 완전한 경로로 연결하는 것이 좋습니다.

마크

0

프로그래밍 다음이 경로를 검색해야 할 경우 같은 것을 수행 할 수 있습니다 몇 가지가주의해야하는

using(DirectoryEntry de = 
    new DirectoryEntry("IIS://Localhost/w3svc/1/root/storage1/test")) 
{ 
    string pathToFiles = de.Properties["Path"].Value; 

    // Do my file tidy up tasks.... 
} 

을 :

  • 수 ' '경로에있는 DirectoryEntry 생성자는 사이트의 IIS 번호입니다. 경로 IIS://Localhost/w3svc/1/root/storage1/test에서

  • , 첫 번째 부분 IIS://Localhost/w3svc/1/root 웹 사이트의 '루트'응용 프로그램 입니다. 이 부분이 항상 필요합니다.

  • System.DirectoryServices어셈블리에 대한 참조를 프로젝트에 추가해야합니다.