System.InvalidOperationException: не удалось сопоставить путь '/ sharedDrive / Public' - PullRequest
1 голос
/ 18 июня 2010

Я пытаюсь настроить страницу, которая позволит пользователям загружать файлы с общего диска (куда файл фактически отправляется через страницу). Пока это то, что у меня есть.

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 Ответ

2 голосов
/ 18 июня 2010

Вам не нужно вызывать MapPath для пути к файлу UNC. 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...