System.InvalidOperationException:无法映射路径'/ sharedDrive / Public'

时间:2010-06-18 15:58:51

标签: c# asp.net file

我正在尝试设置一个页面,允许用户从共享驱动器下载文件(文件实际通过页面发送)。到目前为止,这就是我所拥有的。

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身份是我的用户(可以访问该驱动器)。我不明白问题是什么,或者甚至抱怨什么。

1 个答案:

答案 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");