59

如何在 C# 类库类中使用 server.mappath 方法,它充当我的 ASP.NET 网站的 BusinessLayer

4

7 回答 7

121

通过调用它?

var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");

确保添加对 System.Web 程序集的引用。

于 2009-07-29T11:14:32.780 回答
23

您可以使用以下代码获取基本路径并将所需的路径附加到该路径中。

string  path = System.AppDomain.CurrentDomain.BaseDirectory;
于 2013-12-04T05:25:47.900 回答
7

您应该参考 System.Web 并调用:

  HttpContext.Current.Server.MapPath(...)
于 2009-07-29T11:14:47.633 回答
5

使用此System.Web.Hosting.HostingEnvironment.MapPath()

HostingEnvironment.MapPath("~/file")

想知道为什么没有人在这里提到它。

于 2016-01-05T12:19:33.903 回答
4

也许您可以将其抽象为依赖项并创建一个 IVirtualPathResolver。这样,您的服务类就不会绑定到 System.Web,如果您想在不同的 UI 技术中重用您的逻辑,您可以创建另一个实现。

于 2012-04-08T16:24:46.447 回答
2
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
于 2016-07-26T11:16:08.477 回答
2

在架构上,不应在业务逻辑层 (BLL) 中引用 System.web。将 BLL 应用到解决方案结构中以遵循关注点分离原则,因此参考 System.Web 是一种不好的做法。BLL 不应在 Asp.net 上下文中加载/运行。由于您应该考虑使用的原因System.AppDomain.CurrentDomain.BaseDirectory而不是System.Web.HttpContext.Current.Server.MapPath

于 2017-09-06T06:49:56.177 回答