Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Обращение к файлам на сервере


Автор: Tiberian 12.5.2008, 11:31
      Имеется сайт, в корне которого лежит некий xml файл. При попытке открыть его с помощью метода [XmlFile].Load("~/somexmlfile.xml") среда пытается искать файл в текущей директории, добавляя к ней "~/somexmlfile.xml"... Собственно, вопрос: как же ентот файл открыть?.. Пусть даже он будет в App_Data.

Автор: Rififi 12.5.2008, 12:34
Tiberian
в win32 надо парсить переменные среды.

Код
private static readonly Regex rxEnvVar = new Regex(@"%(?<Var>[\w_]+)%", RegexOptions.Compiled | RegexOptions.IgnoreCase);

...

// подставить в строку вместо переменных окружения их значения
private static string ExpandStringWithEnvironmentVariables(string path)
{
    return String.IsNullOrEmpty(path) ? null : rxEnvVar.Replace(path,
        new MatchEvaluator(delegate(Match m)
                    {
                        string expanded = Environment.GetEnvironmentVariable(m.Groups["Var"].Value);
                        return expanded ?? m.ToString();
                    }));
}


использование:

Код
string s = Класс.ExpandStringWithEnvironmentVariables(@"%USERPROFILE%\somexmlfile.xml");


(вместо '\' можно использовать системный PathSeparator)

ps. либо воспользоваться Environment.GetFolderPath

Автор: Tiberian 12.5.2008, 14:31
     В том то и дело, что не в win32... а в ASP.NET... Как в коде обратиться к файлам, которые лежат в App_Data?..

Автор: kosten_spb 13.5.2008, 07:29
Tiberian
попробуй обратиться к файлу так:
Код

string filePath = Request.PhysicalApplicationPath + "somexmlfile.xml";

Автор: Tiberian 14.5.2008, 14:04
kosten_spb, гениально! Я долго смотрел на Request.PhysicalApplicationPath но отвергал его, ибо думал, что он привяжет путь к файлу только на моём компе. Твой пост заставил меня взглянуть на это по-новому =) путь-то этот генериться по ходу выполнения =) всем спасибо, разобрался =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)