Как я могу использовать метод server.mappath в классе библиотеки классов С#, который действует как мой BusinessLayer для моего веб-сайта ASP.NET
Server.Mappath в С# classlibrary
Ответ 1
Вызывая его?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Убедитесь, что вы добавили ссылку на сборку System.Web.
Ответ 2
Вы можете получить базовый путь, используя следующий код и добавив необходимый вам путь.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
Ответ 3
Вам следует обратиться к System.Web и вызвать:
HttpContext.Current.Server.MapPath(...)
Ответ 4
Возможно, вы могли бы абстрагировать это как зависимость и создать IVirtualPathResolver. Таким образом, ваши классы обслуживания не будут привязаны к System.Web, и вы можете создать другую реализацию, если хотите повторно использовать свою логику в другой технологии пользовательского интерфейса.
Ответ 5
Используйте этот System.Web.Hosting.HostingEnvironment.MapPath().
HostingEnvironment.MapPath("~/file")
Интересно, почему никто не упоминал об этом здесь.
Ответ 6
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(путь);
Ответ 7
Архитектурно, System.web не следует ссылаться в Business Logic Layer (BLL). Используйте BLL в структуре решения, чтобы следовать отдельному принципу беспокойства, поэтому обратитесь к System.Web, это плохая практика. BLL не должен загружаться/запускаться в контексте Asp.net. Из-за причины вам следует рассмотреть возможность использования System.AppDomain.CurrentDomain.BaseDirectory
вместо System.Web.HttpContext.Current.Server.MapPath