2011-09-27 2 views
0

Hello 코드 전문가 일부 파일을 가상 디렉터리에 업로드하고 있습니다. 가상 디렉터리에 대해 다음과 같은 경로를 제공합니다.가상 경로 문제

"/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"; 

로컬 서버에서는 작동하지만 라이브 서버에서는 정상적으로 작동합니다. 라이브 서버에 파일을 업로드하지 않습니다.

나는 그 다음이 작동

"~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"; 

로 변경하는 경우? 그렇지 않다면 어떻게 가상 디렉터리에 매핑해야합니까?

답변

1

~을 의미하는 문서를 읽으십시오. 두 번째 접근법은 언제나 유효합니다. 첫 번째 접근법은 유효하지 않습니다. Te는 먼저 폴더가/Uploads (웹 서버 루트에 있음)라고 가정합니다.

+0

두 번째 접근 방식이 실제로 작동하는지 알려 줘서 고마워요? – user728630

2

는 @MarkisT로는 Server.MapPath 기능을

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

Server.MapPath("~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"); 
+0

이 도구를 사용하려고했지만 현재 로컬에서 작동하지 않습니다. 업로드 된 이미지가 없습니다. – user728630

+0

파일을 업로드하려고 할 때 되돌아 오는 특정 오류가 있습니까? – Markis

+0

실제로 웹 핸들러 파일을 사용하여 가상 디렉터리에 이미지를 쓰고 있는데, 당신이 말한 것처럼 말하지 않지만 "~/Uploads /"+ DatabaseName + "/"와 같이 사용할 때 호출됩니다. + REOID + "/"+ "ExternalDocument"+ "/"; – user728630

1

+1을 사용한다. 당신은 또한 프레임 워크가 당신을 위해 조합 할 수 있도록 제안 : 당신은 여전히 ​​문제가있는 경우

http://msdn.microsoft.com/en-us/library/dd782933.aspx

using System.IO; 
using System.Web; 

var path = Path.Combine("~/Uploads", DataBaseName, REOID, "ExternalDocument"); 
var fullPath = Server.MapPath(path); 

을; 로컬 및 서버에서 fullPath를 검사하여 가상 경로 및 절대 경로와 관련된 상황을 파악할 것을 제안합니다. 서버에 보안 문제가있을 수도 있습니다. 특히 응용 프로그램 디렉토리 외부에서 작성하는 경우에 특히 그렇습니다. 물론,이 경우 예외가 발생할 것으로 예상됩니다.

+0

Iam에 오류가 발생했습니다. '메서드에 대한 오버로드가 없습니다.'4 개의 인수가 필요합니다. – user728630

+0

.NET Framework 4 이상입니다. 3.5 이하에서는 Path.Combine 문 (각각 2 개의 인수)을 사용하거나 손으로 빗질해야합니다. Server.MapPath의 결과를 검사하는 방법에 대한 조언은 여전히 ​​있습니다. 실제로 쓰는 위치를 이해하면 문제를 해결하는 열쇠가됩니다. – dividius