ReadAllLines не находит мой путь к текстовым файлам? (ASP. NET MVC) - PullRequest
1 голос
/ 24 апреля 2020

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

"System.IO.DirectoryNotFoundException:« Не удалось найти часть пути ».. . '"

enter image description here

Я очень уверен, что использую правильный путь, так как скопировал его непосредственно с другого контроллера, используя точно такой же путь.

Ниже приведен результат действия, который вызывает этот указанный c путь во время его выполнения:

public ActionResult DeleteItemLine(string ReferenceDelete)
        {
            // 1. Read the content of the file
            string[] readLineItems = System.IO.File.ReadAllLines("~/App_Data/Item.txt");

            // 2. Empty the file
            System.IO.File.WriteAllText("~/App_Data/Item.txt", string.Empty);

            // 3. Fill up again, but without the deleted line
            using (StreamWriter writeItems = new StreamWriter("~/App_Data/Item.txt"))
            {
                foreach (string line in readLineItems)
                {
                    if(!line.Equals(ReferenceDelete))
                    {
                        writeItems.WriteLine(line);
                    }
                }
            }

            return View();
        }

Есть ли что-нибудь явно очевидное, что я здесь упускаю? Любое руководство будет с благодарностью. Большое вам спасибо!

1 Ответ

2 голосов
/ 24 апреля 2020

Похоже, System.IO.File.ReadAllLines("~/App_Data/Item.txt") не понимает, что означает ~, и основано на root сервера, а не проекта.

Вам необходимо использовать Server.MapPath(), это примет пути относительно проекта.

Используйте это;

string[] readLineItems = System.IO.File.ReadAllLines(Server.MapPath("~/App_Data/Item.txt"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...