Вопрос

Как я могу использовать метод 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top