2010-06-18 3 views
1

사용자가 공유 드라이브에서 파일을 다운로드 할 수있는 페이지를 설정하려고합니다 (파일이 실제로 페이지를 통해 전송되는 곳). 지금까지 이것이 내가 가진 것입니다.System.InvalidOperationException : '/ sharedDrive/Public'경로를 매핑하지 못했습니다.

public partial class TestPage : System.Web.UI.Page 
{ 
    protected DirectoryInfo dir; 
    protected FileInfo[] files; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     dir = new DirectoryInfo(Server.MapPath(@"\\sharedDrive\Public")); 
     files = dir.GetFiles(); 
    } 
} 

은 aspx 페이지는 다음과 같은 종류의 외모 :

<% Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name); %> 
<ul> 
<% foreach (System.IO.FileInfo f in files) 
{ 
    Response.Write("<li>" + f.FullName + "</li>"); 
} %> 
</ul> 

내가 코드의 잘못된 부분을 제거하면 페이지가 내가 사용 윈도우 신원이 (내 사용자인지 나에게 알려줍니다 드라이브에 액세스 할 수 있음). 나는 그 문제가 무엇인지 또는 그것이 불평하는 것이 무엇인지 이해하지 못한다.

답변

2

UNC 파일 경로에 대해 MapPath를 호출 할 필요가 없습니다. Server.MapPath()은 ASP.NET 응용 프로그램의 루트와 관련된 경로가 지정된 파일의 전체 로컬 경로를 작성합니다.

예를 들어

: \ myiisappdir \ MyRelativeDir \ MyRelativePath.txt

원격 경로는 응용 프로그램 루트를 기준으로하지 않기 때문에 아래의 코드는 불법입니다 :

Server.MapPath(@"MyRelativeDir\MyRelativePath.txt") 

C를 반환 할 수 있습니다

Server.MapPath(@"\\sharedDrive\Public") 

IIS 응용 프로그램의 ID 및 공유 권한이 맞으면 다음 shou 일해 :

DirectoryInfo info = new DirectoryInfo(@"\\sharedDrive\Public"); 
+0

위대한 설명. 나는 그것이 지금 제대로 작동하고 있다고 확신한다. :) –

관련 문제