Не удалось найти часть пути при попытке получить путь в ASP.NET - PullRequest
0 голосов
/ 19 мая 2011

У меня есть следующий код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class view4 : System.Web.UI.Page
{
     protected void Page_Load(object sender, EventArgs e)
     {

        string strheadlinesid = string.Empty;

        if (!IsPostBack)
        {
            if (!string.IsNullOrEmpty(Convert.ToString(
                 Request.QueryString["folder"].ToString())))
            {
                strheadlinesid = Request.QueryString["folder"].ToString();
            }
       }

       Response.Write("<table style='width: 10px; height: 10px; margin-left: 
           100px; margin-top: 10px'>");

        DirectoryInfo Dir = new DirectoryInfo(strheadlinesid);

        FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);

        foreach (FileInfo FI in FileList)
        {

            Response.Write("<tr>");

            Response.Write("<td><a href= view3.aspx?file=" + FI.Name + "> " + 
                FI.Name + "</a></td>");
            Response.Write("</tr>");
        }

        Response.Write("</table>");

    }

    private object DirectoryInfo(string p)
    {
        throw new NotImplementedException();
    }


}

Я получаю путь к каталогу, сохраняя его в папке. Однако, когда я использую его для печати файлов из этого каталога, я получаю следующую ошибку:

Не удалось найти часть пути . 'C: \ Users \ Naresh \ Documents \ Визуальный \'

Фактический путь C:\Users\naresh\Documents\Visual Studio 2010\WebSites\C_Manager\Account. Но часть учетной записи динамически меняется.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2011

Это было какое-то время ... не знаю, если это уже было решено ...

Интересно, путь, указанный в сообщении об ошибке, отличается от пути, по которому вы пытаетесь загрузить / получить доступ:

  • Путь: C: \ Users \ naresh \ Documents \ Visual Studio 2010 \ WebSites \ C_Manager \ Account
  • Ошибка: C: \ Users \ naresh \ Documents \ Visual \

Обрезание в пустом месте после "Visual"?

Одна вещь, которую нужно проверить (отказ от ответственности: не знаю, в этом и заключается проблема), заключается в том, что имя пути закодировано в URL, когда оно встроено в вашу ссылку. Например, изменить:

Response.Write("<td><a href= view4.aspx?folder="
    + directory.FullName + "> "
    + directory.FullName + "</a></td>");

до

Response.Write("<td><a href= view4.aspx?folder="
    + Server.UrlEncode(directory.FullName) + "> "
    + directory.FullName + "</a></td>");

и посмотрите, имеет ли это какое-то значение.

И, конечно же, любой код, который пытается использовать этот путь для доступа / загрузки / записи / и т. Д. К чему-либо ...

0 голосов
/ 13 ноября 2017

Добавьте вашего пользователя в личность пула приложений, и он будет работать, это все о разрешениях

0 голосов
/ 19 мая 2011

Скорее всего, ваша проблема связана с разрешениями безопасности.Типичная учетная запись пользователя (сетевая служба или учетная запись пользователя asp.Net), под которой запускается ваше веб-приложение, имеет очень ограниченные разрешения (это путь в папке профиля пользователя).Попробуйте изменить разрешения для указанной папки или запустить приложение wep под другим идентификатором (используя настройки IIS или олицетворение ASP.NET)

...