Server.Mappath в библиотеке классов C#
-
20-09-2019 - |
Вопрос
Как я могу использовать метод server.mappath в классе библиотеки классов C#, который действует как мой BusinessLayer для моего веб-сайта ASP.NET
Решение
Называя это?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Убедитесь, что вы добавили ссылку на сборку System.Web.
Другие советы
Вы можете получить базовый путь, используя следующий код и добавив необходимый путь к этому.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
Вы должны ссылаться на System.web и вызов:
HttpContext.Current.Server.MapPath(...)
Может быть, вы могли бы абстрагировать это как зависимость и создать IvirtualPathresolver. Таким образом, ваши классы услуг не будут связаны с System.Web, и вы можете создать другую реализацию, если хотите повторно использовать свою логику в другой технологии пользовательского интерфейса.
Использовать это System.web.hosting.hostingenvironment.mappath ().
HostingEnvironment.MapPath("~/file")
Интересно, почему никто не упомянул об этом здесь.
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
С архитектурной точки зрения System.web не следует относить к уровню бизнес-логики (BLL).Используйте BLL в структуре решения, чтобы следовать принципу разделения задач, поэтому обращение к System.Web является плохой практикой.BLL не должен загружаться/запускаться в контексте Asp.net.По этой причине вам следует рассмотреть возможность использования System.AppDomain.CurrentDomain.BaseDirectory
вместо System.Web.HttpContext.Current.Server.MapPath