2010-07-24 5 views
0

문제는 내가 컴파일하고 로컬에서 잘 작동합니다 (즉,이 "file.FileName"이 파일 이름에 경로가있는 파일을 제공함) 하지만 로컬 IIS에서 동일한 코드를 실행하면 작동하지 않습니다 (즉,이 "file.FileName"은 파일 이름 만 제공). 누구든지 무슨 일이 일어나는지 말해 주실 수 있습니까?게시 된 파일이 경로와 함께 파일 이름을 가져올 수 없습니다.

 foreach (string inputTagName in Request.Files) 
     { 
      HttpPostedFileBase file = Request.Files[inputTagName]; 
      //File file; 
      if (file.ContentLength > 0) 
      { 
       string FilePath = file.FileName; 
       .......... 
      } 
      ........ 
     } 

답변

1

MSDN는 말한다 :

파생 클래스에서 재정의

는 클라이언트에서 파일의 완전한 이름을 가져옵니다.

파일을 저장하려면 다음을 참조하십시오.

var filename = Path.Combine(Request.MapPath("~/App_Data"), Path.GetFileName(file.FileName)); 
file.SaveAs(filename); 
0

로컬로 말할 때 VS IDE에서 응용 프로그램을 직접 실행한다고 가정합니다. 당신은 VS 2005/2008/2010 여부에 관계없이 사용중인 VS IDE의 버전을 언급하지 않았습니다. 또한이 개발 환경 중 하나를 사용하고 있다고 가정합니다.

이 경우 로컬에서 실행할 때 VS는 inbuilt cassini 서버를 사용하여 파일 시스템에 액세스합니다. 사이트를 배포하면 IIS를 사용하게됩니다. cassini 서버는 VS와 동일한 ID로 실행되므로 파일에 액세스 할 수 있습니다.

IIS를 사용하여 동일한 작업을 수행하려고하면 서비스 계정으로 실행되기 때문에 실패 할 수 있습니다. 웹 서버에서 읽거나 쓰려고하는 폴더에 읽기 전용 쓰기 권한을 명시 적으로 부여해야합니다.

Windows 2008 서버를 사용하는 경우 네트워크 또는 네트워크 서비스 계정이 IIS 프로세스를 실행하는 데 사용되는지 여부를 확인해야합니다. 이전 운영 체제의 경우 실제 폴더에 대한 권한이 필요한 ASPNET 계정이됩니다.

관련 문제