【发布时间】:2009-07-29 11:11:31
【问题描述】:
如何在 C# 类库类中使用 server.mappath 方法,它充当我的 ASP.NET 网站的 BusinessLayer
【问题讨论】:
标签: c# server.mappath
如何在 C# 类库类中使用 server.mappath 方法,它充当我的 ASP.NET 网站的 BusinessLayer
【问题讨论】:
标签: c# server.mappath
通过调用它?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
确保添加对 System.Web 程序集的引用。
【讨论】:
您可以使用以下代码获取基本路径并将所需的路径附加到该路径中。
string path = System.AppDomain.CurrentDomain.BaseDirectory;
【讨论】:
你应该引用 System.Web 并调用:
HttpContext.Current.Server.MapPath(...)
【讨论】:
使用这个System.Web.Hosting.HostingEnvironment.MapPath()。
HostingEnvironment.MapPath("~/file")
奇怪为什么这里没有人提到它。
【讨论】:
也许您可以将其抽象为依赖项并创建一个 IVirtualPathResolver。这样,您的服务类就不会绑定到 System.Web,如果您想在不同的 UI 技术中重用您的逻辑,您可以创建另一个实现。
【讨论】:
在架构上,System.web 不应在业务逻辑层 (BLL) 中引用。将 BLL 应用到解决方案结构中以遵循关注点分离原则,因此参考 System.Web 是一种不好的做法。 BLL 不应在 Asp.net 上下文中加载/运行。由于这个原因,您应该考虑使用 System.AppDomain.CurrentDomain.BaseDirectory 而不是 System.Web.HttpContext.Current.Server.MapPath
【讨论】:
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
【讨论】: