Работа с файлами в ASP.NET MVC - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над проектом ASP.NET MVC, который компилирует входной код в файл .exe. Затем мой код запускает это .exe. После успеха я просто удаляю этот файл .exe.

Для повторного ввода кода я использую класс CSharpCodeProvider . Для запуска я использую класс Process .

Создание и удаление exe файлов кажутся мне немного сложными, потому что я не могу сохранить эти файлы напрямую в каталог проекта, пока я отлаживаю свою программу. Мне нужно дать специальные разрешения для IIS_USERS. Но что делать, когда я хочу выпустить свой проект в производство? Как бороться с filepath? Где его сохранить?

Теперь это выглядит так:

string exeName = Path.Combine("C:\\Users\\User\\source\\repos\\proj\\solution\\obj\\Debug", "test.exe");

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

Для работы с путями вы должны использовать Server.MapPath("~") - это возвращает физический путь к корню веб-приложения.

Например, если в решении есть папка с именем «MyOutput» (параллельно папкам Controller, Views и т. Д.), Вы можете написать Server.MapPath("~/MyOutput/"). Это разрешит к физическому пути как C:\Users\User\source\repos\proj\solution\MyOutput\

Таким образом, вам не нужно беспокоиться об изменении путей на локальных машинах или веб-серверах. Также не следует помещать в папки Obj или Bin материалы, которые не имеют прямого отношения к веб-приложению.

Дополнительные образцы доступны здесь: Server.MapPath ("."), Server.MapPath ("~"), Server.MapPath (@ "\"), Server.MapPath ("/"). В чем разница?

1 голос
/ 05 апреля 2019

Как насчет того, чтобы спросить пользователя, где его сохранить?

У вас может быть форма, которая запрашивает этот путь, имя пользователя, пароль и т. Д. Или даже в конфигурации <appSettings></appSettings>

Затем вы можете использовать Олицетворение , чтобы сохранить его, выполнить без каких-либо разрешений. Вы можете использовать это, чтобы сохранить его локально или на любой сетевой диск

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...