Получить текущий каталог в asp.net mvc

Я пытаюсь создать путь к файлу для чтения файла XSLT, например, так:

string path = "../_xslt/example.xslt";
StreamReader reader = new StreamReader(path); 

... где я нахожусь в контроллере (/Controllers/ExampleController.cs), а папка '/_xslt/' находится на том же уровне, что и '/Controllers'

Однако я получаю сообщение об ошибке:

(System.IO.DirectoryNotFoundException) Не удалось найти часть пути 'c:\windows\system32\_xslt\example.xslt'.

Я поступаю неправильно?

Спасибо за любую помощь!

Ответы

Ответ 1

Вы можете использовать метод HttpServerUtility.MapPath для сопоставления любых относительных путей для вас, в вашем контроллере это легко доступно через ControllerContext:

string path = ControllerContext.HttpContext.Server.MapPath("~/_xslt/example.xslt");
...

Ответ 2

Если контроллер присутствует в корне каталога

String path = ControllerContext.HttpContext.Server.MapPath(@"~/_xslt/example.xslt");

Else

String path = ControllerContext.HttpContext.Server.MapPath(@"../_xslt/example.xslt");

Ответ 3

string TestX()
{
    string path = AppDomain.CurrentDomain.BaseDirectory; // You get main rott
    string dirc = ""; // just var for use
    string[] pathes = Directory.GetDirectories(path); // get collection

    foreach (string str in pathes)
    {
        if (str.Contains("NameYRDirectory")) // paste yr directory
        {
            dirc = str;
        }
    }

    return dirc; // after use Method and modify as you like
}