Получить путь к сайту ASP.NET MVC в файловой системе - PullRequest
7 голосов
/ 06 июля 2011

У меня есть проект ASP.NET MVC, у которого есть подпапка, называемая электронная почта.Это содержит файлы HTM для моих шаблонов электронной почты.В определенные моменты на сайте у меня есть контроллер, который должен загрузить один из этих шаблонов и отправить его по электронной почте.

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

var directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \ ssl \ 1da130c4 \ f8e7810e \ assembly \dl3 \ 5f253aca \ 1a71f123_e83bcc01 \ Emails \ ProductAccountConfirmation.htm '

Я нахожу это странным, поскольку сайт размещается в IIS через Visual Studio.Я бы подумал, что это даст мне расположение DLL в папке моего проекта в dev и папку развертывания для IIS в производстве.

Ответы [ 5 ]

9 голосов
/ 06 июля 2011

То, что вы ищете, это Server.MapPath () , он даст вам путь к приложению, которое вы выполняете.

4 голосов
/ 06 марта 2012

Допустим, у вас есть файл template1.html в вашей подпапке электронной почты.Этот код должен дать вам полный путь к этому файлу HTML.

HttpContext.Current.Server.MapPath("/") + "\\emails\\template1.html";
3 голосов
/ 16 февраля 2015
AppDomain.CurrentDomain.BaseDirectory
1 голос
/ 06 июля 2011

Вы можете получить корневой путь вашего приложения с помощью:

@HostingEnvironment.ApplicationPhysicalPath
1 голос
/ 06 июля 2011

В ASP.Net создается копия сборок, и именно эта копия используется во время выполнения.Ваши dll в папке проекта - это просто шаблоны.

Для чего вам нужен этот каталог?Может быть альтернативный способ достижения ваших целей.

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