我正在尝试设置一个页面,允许用户从共享驱动器下载文件(文件实际通过页面发送)。到目前为止,这就是我所拥有的。
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>
当我删除代码的错误部分时,该页面告诉我我正在使用的Windows身份是我的用户(可以访问该驱动器)。我不明白问题是什么,或者甚至抱怨什么。
答案 0 :(得分:2)
您不必为UNC文件路径调用MapPath。 Server.MapPath()为给定相对于ASP.NET应用程序根目录的路径的文件构建完整的本地路径。
例如:
Server.MapPath(@"MyRelativeDir\MyRelativePath.txt")
可能会返回 c:\ myiisappdir \ MyRelativeDir \ MyRelativePath.txt
以下代码是非法的,因为远程路径不是相对于应用程序根目录:
Server.MapPath(@"\\sharedDrive\Public")
因此,如果您的IIS应用程序的身份和共享权限是正确的,我认为以下内容应该有效:
DirectoryInfo info = new DirectoryInfo(@"\\sharedDrive\Public");